Сохранить несколько результатов из HLookup в списке - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь сохранить результаты функции HLookup в списке. Тем не менее, он показывает ошибку 1004 в строке 'set Myrange = ...'.

Private Sub CommandButton1_Click()


'fill listbox with athletes from relevant country
Dim Myrange As Range
Dim Test(4 To 24) As String
Dim name As String
Dim i As Integer

name = Sheets("RelayRankingData").Cells(2, 5)
Set Myrange = Sheets("AthletesTable").Range("A1:L24")
Myrange.Select
For i = 4 To 24

Test(i) = Application.WorksheetFunction.HLookup(name, Myrange, i, False)

Next i

UserForm1.ListBox1.List = Test()
'-------------------------------------

'Show form with listbox and transferbutton
UserForm1.Show

End Sub

Я также добавил несколько скриншотов из данных [Скриншот1] [Скриншот 2]

1 Ответ

0 голосов
/ 13 января 2020

MsgBox в vba не поддерживает печать списков, как вы пытаетесь. Вы увидите, что если вы сделаете MsgBox Test(1), это даст вам вывод. Тем не менее, я подозреваю, что это только вы тестируете, если у вас есть правильный вывод. Чтобы добавить это в список, это не имеет значения, это можно сделать так, как вы пытались:

Sheet1.ListBox1.List = Test()

В соответствии с вашими комментариями, это должно быть помещено в список на форме пользователя вместо конечной цели. сохранить строки с 4 по 24 в коде инициализации пользовательской формы. Это может быть сделано согласно ниже:

Private Sub UserForm_Initialize()

Dim Myrange As Range
Dim Test(4 To 24) As String
Dim name As String
Dim i As Integer

name = Sheets("Name of Blad3").Cells(1, 2)
Set Myrange = Sheets("AthletesTable").Range("A1:L24")
Myrange.Select
For i = 4 To 24

Test(i) = Application.WorksheetFunction.HLookup(name, Myrange, i, False)

Next i

UserForm1.ListBox1.List = Test()

End Sub
...