Страницы: 1
RSS
ассоциировать zTextBox (As TextBox) с другим объектом типа TextBox (на странице UserForm)
 
Добрый день (ещё раз)!

Придумал хитрый план
- подглядев технологию у объектов типа Range:
Код
Private Sub MultiPage2_Change()

Dim zTextBox As TextBox

    Select Case MultiPage2.Value
    Case 1: Set zTextBox = TextBox1
    Case 2: Set zTextBox = TextBox2
    Case 3: Set zTextBox = TextBox3
    Case 4: Set zTextBox = TextBox4
    End Select

    With zTextBox
    .SetFocus
    .SelStart = 0
    End With

End Sub
...но он не сработал:
с Set'ом - возвращает "Type mismatch";
без Set'a - "Object variable or With block variable not set" (eye roll).

Хотелось, чтобы при переключении MultiPage2
- срабатывал фокус на тот, или иной TextBox, расположенный (само собой) на соответственном листе.
Ну и чтобы код был симпатичным.

Изменить "TextBox1" на "UserForm1.TextBox1" пробовал.
Пробовал также и на "Me.TextBox1": ничего не изменилось.

В Locals вообще какая-то ахинея, но типы данных вроде соответствуют.

Set, что ли, здесь неприменим?
Изменено: RazorBaze - 09.08.2018 10:01:10
 
вроде не первый день на форуме, а так и не поняли что приложенный файл решает большую часть вопросов, в том числе и избавляет от наводящих вопросов.
 
А так?
Код
Dim zTextBox As Control

или так
Код
Dim  zTextBox  As MSForms.TextBox
Изменено: Nordheim - 09.08.2018 10:03:13
"Все гениальное просто, а все простое гениально!!!"
 
Потрясающе, Nordheim! Большое спасибо! (использовал Control)

V, вопрос-то чисто-грамматический.
Спроси я про тот же Range - Вы бы сказали "добавь Set" (если б его не было), и этого было бы достаточно.
Изменено: RazorBaze - 09.08.2018 10:15:16
 
RazorBaze, правильнее
Код
Dim zTextBox As msforms.TextBox
Потому что тип TextBox в Excel - это его "родной" текстбокс с панели "Формы" :)
А вообще можно As Object или без указания типа - Variant.
 
В данном случае может сработать вот такой код, но при определенных условиях.

Код
Private Sub MultiPage2_Change()
 With UserForm1.Controls("TextBox" & UserForm1.MultiPage2.Value)
    .SetFocus
    .SelStart = 0
 End With
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, догадывался о такой роскоши, но не решался потратить время на исследование))
Большое спасибо ещё раз!

Казанский, про Object и Variant - спасибо за подсказку! В таких случаях склонен проявлять неопытность.
Про msforms.TextBox тоже соглашусь.
Страницы: 1
Наверх