Есть ли способ выбрать список (аналогично нажатию на него мышью?) - PullRequest
0 голосов
/ 09 марта 2020

Я пишу некоторый код VBA для пользовательской формы. Значения выбираются в списке слева (LB_Participants). Затем нажимается «select» и значения копируются в список справа (LB_Output). Затем я хочу, чтобы VBA go через все эти элементы отдельно в LB_Output и просматривал другие связанные данные из другой рабочей таблицы. Проблема у меня в том, что иногда значения не выбираются. Я проверяю это с сообщением, и время от времени это пустое. Тогда никакие связанные данные не могут быть извлечены из курса. Прежде чем начинать заполнять пользовательскую форму, если я просто нажму один раз на LB_Output (даже без выбора какого-либо значения), у меня нет этой проблемы. Многие люди будут использовать пользовательскую форму, поэтому я не хочу объяснять им, что они должны сначала щелкнуть в списке, прежде чем продолжить ... Есть что-то, что я не правильно делаю? Бланк Msgbox

Dim ListCount As Integer
Dim z As Integer

ListCount = UserForm2.LB_Output.ListCount

For z = 0 To ListCount - 1
UserForm2.LB_Output.Selected(z) = True
TextString = UserForm2.LB_Output.Value
MsgBox (TextString)

'Split Participants into seperate names and copy them to data sheet
    WArray() = Split(TextString, ";")
    For Counter = LBound(WArray) To UBound(WArray)
        Dim LRNames As Integer
        If IsEmpty(Sheets("Data").Range("A1")) = True Then
        LRNames = 0
        Else
        LRNames = Sheets("Data").Range("A" & Application.Rows.Count).End(xlUp).Row
        End If
        Strg = WArray(Counter)
        Sheets("Data").Cells(LRNames + 1, 1) = Trim(Strg)
    Next Counter
Next z

1 Ответ

0 голосов
/ 09 марта 2020

Не уверен, что я понимаю, но думаю, что вы хотите l oop через все элементы в LB_Output и обрабатывать их независимо от того, выбран ли он или нет - весь выбор был сделан в другом списке, и эти элементы были перемещены в LB_Output.

Это явно не выбирает каждый элемент, просто получает данные из него.

For z = 0 to UserForm2.LB_Output.Listcount -1
   ' If you want to select the item to show 'progress' through the list,
   ' uncomment ...
   ' LB_Output.listindex = z
   ' The next line will still work as is
   TextString = UserForm2.LB_Output.List(z)
   '// Do processing with this item
Next 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...