как иметь переменную в имени индикатора объекта пользовательской формы (VBA) - PullRequest
0 голосов
/ 24 февраля 2019

Я создаю пользовательскую форму в VBA, и я ищу для поиска определенного текста, когда он будет найден, я хочу, чтобы текстовые поля заполнялись из следующих ячеек.

myкод будет:

i = TextBox1.Value
Set orange = Sheets(1).Range("A1:A10000").Find(i, LookIn:=xlValues, lookat:=xlWhole)
If orange Is Nothing Then
MsgBox "No Match Found"
Else: j = orange.Address
ka = 1
kb = 11
For k = 1 To 10
UserForm1(TextBox & kb).Value = Sheets(1).Range(j).Offset(0, ka).Value
ka = ka + 1
kb = kb + 1
Next k

конечно UserForm1(TextBox & kb).Value = Sheets(1).Range(j).Offset(0, ka).Value не работает.

любая помощь с этим?

1 Ответ

0 голосов
/ 24 февраля 2019
  • Используйте Me вместо имени формы
  • Вам не нужны все эти переменные счетчика - просто используйте счетчик цикла
  • Используйте коллекцию Controlsчтобы получить доступ к текстовым полям (передавая в строке)
  • Отступ в свой код

Не проверено:

i = TextBox1.Value
Set orange = Sheets(1).Range("A1:A10000").Find(i, LookIn:=xlValues, lookat:=xlWhole)

If orange Is Nothing Then
    MsgBox "No Match Found"
Else

    For k = 1 To 10
        Me.Controls("TextBox" & (k+10)).Value = orange.EntireRow.Cells(k).Value
    Next k

end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...