Вызов объекта целым числом - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь редактировать тексты некоторых объектов с помощью этого:

' Textbox1
' Textbox2
' Textbox3

Sub Change_Text()

    Dim i As Integer


    For i = 1 To 3

        UserForm1.Textbox & i = "Hi"

    Next i

End Sub

Я думаю, что код объясняет мою проблему, конечно, это возвращает ошибку, я понятия не имею, что делать ...

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Вероятно, оптимальным решением (по крайней мере, из вашего примера) было бы перебрать все Textbox es

Private Sub loop_through_conts()
  Dim cont as Control
  For Each cont in Me.Controls
     If TypeName(cont) = "Textbox" Then
        Select Case Right(cont.Name, 1) ' in case you want only first three
        Case 1 To 3
           cont.Text = "Hi"
        End Select
     End If
  Next cont
End Sub

Таким образом, ваш код является динамическим и не требует переписывания в случае добавления нового Textbox

2 голосов
/ 26 мая 2019

Вы могли бы сделать это так

For i = 1 To 3
    Controls("Textbox" & i) = "Hi"
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...