У меня есть форма. И в ней есть 100500 Controls. Некоторые из них — TextBox, некоторые ComboBox. Перед открытием формы мне нужно заблокировать (.Enabled=False) TextBox'ы, оставив "свободными" ComboBox'ы. Я это делаю в цикле по именам: [vba]
Код
With frm_MyUserForm For i=0 To .Controls.Count 'Да, я знаю про For Each, но не люблю его If Left(.Controls(i).Name, 3) = "txt" Then .Controls(i).Enabled = False Next i End With
[/vba] Оно, конечно, работает, но что-то мне подсказывает, что я чешу правое ухо левой пяткой. Нет ли иного способа определить, чем является .Controls(i)?
У меня есть форма. И в ней есть 100500 Controls. Некоторые из них — TextBox, некоторые ComboBox. Перед открытием формы мне нужно заблокировать (.Enabled=False) TextBox'ы, оставив "свободными" ComboBox'ы. Я это делаю в цикле по именам: [vba]
Код
With frm_MyUserForm For i=0 To .Controls.Count 'Да, я знаю про For Each, но не люблю его If Left(.Controls(i).Name, 3) = "txt" Then .Controls(i).Enabled = False Next i End With
[/vba] Оно, конечно, работает, но что-то мне подсказывает, что я чешу правое ухо левой пяткой. Нет ли иного способа определить, чем является .Controls(i)?StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Или родную экселевскую справку хоть одним глазком [vba]
Код
Sub ControlProcessor(MyControl As Control) If TypeOf MyControl Is CommandButton Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is CheckBox Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is TextBox Then Debug.Print "You passed in a " & TypeName(MyControl) End If End Sub
[/vba] последний ElseIf
Или родную экселевскую справку хоть одним глазком [vba]
Код
Sub ControlProcessor(MyControl As Control) If TypeOf MyControl Is CommandButton Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is CheckBox Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is TextBox Then Debug.Print "You passed in a " & TypeName(MyControl) End If End Sub