VBA возвращает только «имя одного листа» в поле списка с инициализацией формы пользователя, хотя ожидается еще много листов

#excel #vba #listbox #userform

Вопрос:

 Private Sub UserForm_Initialize()

 'declare the variable

 Dim Sh As Variant

 Dim cc As Variant

 cc = Sheet4.Range("C4").Value

 'for each loop to add sheets based on permission rank

 For Each Sh In ActiveWorkbook.Sheets

    'add only permitted sheet(ranking 1 to 6) and exclude settings sheet
    If Sh.Range("G1").Value >= cc And Sh.Name <> "settings" Then
    'add sheets to the list box
        Me.lstSheet.AddItem Sh.Name
    End If

Next Sh

End Sub
 

Комментарии:

1. Возможно ActiveWorkbook , так и должно быть ThisWorkbook ?

2. Нам трудно предложить исправление, не зная соответствующих значений ячеек. На мой взгляд, код выглядит нормально…

3. значение ячейки колеблется от 1 до 6

Ответ №1:

Попробуйте добавить Меня.Перекрасьте после Меня.1-й лист.Дополнение

Это обновит форму.

Подумайте также об изменении имени переменной ListBox с 1stSheet на sheet1ListBox, чтобы сделать его более описательным и простым в отладке.

Комментарии:

1. Спасибо вам за ответ. Проблема заключалась в том, что у меня были числа в диапазоне cc, и после форматирования значения ячейки как числа проблема была решена, ничего с кодом.