Каким образом можно узнать о существовании объекта на форме

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2023

необходимо программным способом узнать о существовании объекта на Форме

    n=0
    name = "TextBox_" 
While Not (Me.Controls(name & CInt(n)) Is Nothing)
    msgbox "форма с номером" & CStr(n) & " существует"
    n=n+1
Wend

Данный способ не работает. Допустим есть 5 текст боксов, с 0...4, при n=5 выдает ошибку. Существует ли другой способ. Я знаю, что можно перебрать все объекты на форме, однако для моей задачи это не подходит, необходимо узнать, только имея имя объекта.

Ответы

▲ 1Принят

Обратитесь к нужному контролу и обработайте ошибку

Sub test1()
    For Each ContolName In Array("TextBox1", "TextBox2", "TextBox3", "TextBox4", "TextBox5")
        On Error Resume Next
        Set tb = UserForm1.Controls(ContolName)
        If Err.Number = 0 Then
            Debug.Print "Элемент " & ContolName & " есть на форме"
        Else
            Debug.Print "Элемента " & ContolName & " нет на форме"
        End If
        On Error GoTo 0
    Next
End Sub
Элемент TextBox1 есть на форме
Элемент TextBox2 есть на форме
Элемент TextBox3 есть на форме
Элемента TextBox4 нет на форме
Элемента TextBox5 нет на форме