Цикл для обновления нескольких списков - PullRequest
0 голосов
/ 14 октября 2018

У меня есть небольшой код VBA, в котором он содержит 3 listBox, и список основан на определенном диапазоне.Можно ли выполнить итерацию цикла для нескольких списков Sheet4.ListBox & i & .AddItem "Select All"

Вот мой код ниже.

    Sub Test()

        Dim i As Integer
        Dim MyRange As Range
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("RESULT")
        last_row = Cells(Rows.Count, "B").End(xlUp).Row
        For i = 1 to 3 
        Set MyRange = ws.Range(Cells(2,i),Cells(last_row,i))
        Call update_listbox(i, MyRange)

End Sub

Sub(update_listbox)
'here i am updating my listing in ListBox

        Sheet4.ListBox & i &.Clear      ''Getting Error here    
        Sheet4.ListBox & i & .AddItem "Select All"  ''Getting Error here        
        Dim myList As Collection
        Dim myVal As Variant
        Set myList = New Collection
        On Error Resume Next
        For Each myCell In myRange.Cells
        myList.Add myCell.Value, CStr(myCell.Value)
        Next myCell
        On Error GoTo 0
        For Each myVal In myList
        Sheet4.ListBox & i &.AddItem myVal      'Getting Error here 
        Next myVal
End Sub

Пожалуйста, помогите.нужен другой обходной путь, если не возможно

1 Ответ

0 голосов
/ 14 октября 2018

ListBox & i создает строку «ListBox1» или «ListBox2» и т. Д. Вы не можете использовать это для прямой идентификации объекта списка, как вы пытались, но вы можете использовать строку для идентификации списка из определенной коллекции.

Вот два метода итерации объектов ListBox рабочего листа из таблицы частного кода рабочего листа (щелчок правой кнопкой мыши на вкладке имени рабочего листа, Просмотреть код).

Option Explicit

Sub refLBs()
    Dim c As Object, i As Long

    For Each c In Me.OLEObjects
        Debug.Print c.Name
    Next c

    For i = 1 To Me.OLEObjects.Count
        Debug.Print Me.OLEObjects("listbox" & i).Name
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...