Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Определить, чем именно является данный конкретный Controls - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить, чем именно является данный конкретный Controls (Макросы/Sub)
Определить, чем именно является данный конкретный Controls
StoTisteg Дата: Воскресенье, 14.02.2016, 15:43 | Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
У меня есть форма. И в ней есть 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)?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеУ меня есть форма. И в ней есть 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
Дата добавления - 14.02.2016 в 15:43
RAN Дата: Воскресенье, 14.02.2016, 15:49 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Изучайте ХИТРОСТИ


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИзучайте ХИТРОСТИ

Автор - RAN
Дата добавления - 14.02.2016 в 15:49
krosav4ig Дата: Воскресенье, 14.02.2016, 15:52 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1362
Репутация: 548 ±
Замечаний: 0% ±

Excel 2007, 2013
[vba]
Код
If TypeOf .Controls(i) Is MSForms.TextBox then Then .Controls(i).Enabled = False
[/vba]
не успел :(


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Воскресенье, 14.02.2016, 15:53
 
Ответить
Сообщение[vba]
Код
If TypeOf .Controls(i) Is MSForms.TextBox then Then .Controls(i).Enabled = False
[/vba]
не успел :(

Автор - krosav4ig
Дата добавления - 14.02.2016 в 15:52
Udik Дата: Воскресенье, 14.02.2016, 15:53 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Или родную экселевскую справку хоть одним глазком :)
[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


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеИли родную экселевскую справку хоть одним глазком :)
[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

Автор - Udik
Дата добавления - 14.02.2016 в 15:53
StoTisteg Дата: Воскресенье, 14.02.2016, 15:57 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Родная справка "хороша", как Ответчик им. тов. Шекли — чтобы задать ей правильный вопрос, нужно знать ответ :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеРодная справка "хороша", как Ответчик им. тов. Шекли — чтобы задать ей правильный вопрос, нужно знать ответ :)

Автор - StoTisteg
Дата добавления - 14.02.2016 в 15:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить, чем именно является данный конкретный Controls (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!