Очистить текстовое поле в многостраничной пользовательской форме при нажатии на текстовое поле
У меня небольшая проблема с некоторым кодированием VBA на многостраничной пользовательской форме, которую я создаю. У меня есть несколько текстовых полей на каждой странице пользовательской формы, и у меня был код, который я использовал с обычными пользовательскими формами, чтобы очистить текстовые поля, представленные в следующем ответе в другой теме ( /questions/25666668/tekstovyij-tekst-podskazki-v-excel-vba/25666684#25666684)
Код выглядит так:
Sub TB_enter(TB_name)
If Len(Me.Controls(TB_name).Tag) = 0 Then
Me.Controls(TB_name).Tag = Me.Controls(TB_name).Value
Me.Controls(TB_name).Value = vbNullString
End If
End Sub
Sub TB_exit(TB_name)
'When you click out of the textbox and no information has been entered, returns original text
If Len(Me.Controls(TB_name).Value) = 0 Then
Me.Controls(TB_name).Value = Me.Controls(TB_name).Tag
Me.Controls(TB_name).Tag = vbNullString
End If
End Sub
Наряду со следующим кодом, используемым для текстовых полей, чтобы очистить их:
Private Sub AdNtbx_Enter()
TB_enter ActiveControl.Name
End Sub
Private Sub AdNtbx_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TB_exit ActiveControl.Name
End Sub
Моя проблема в том, что они больше не работают, потому что они находятся на нескольких страницах, и в следующей строке появляется ошибка:
Me.Controls(TB_name).Value = vbNullString
У кого-нибудь есть предложения относительно того, в чем может быть проблема / решение?
Я действительно ценю это. Спасибо!
1 ответ
Я считаю, что это то, что вы ищете:
Set Page1 = ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls("Multipage1").Pages("Page1")
Page1.textbox1.Text = vbNullString
Вы можете редактировать свойства ThisWorkbook, UserForm1 и т. Д. В соответствии с вашими потребностями, но с помощью этого кода вы сможете очищать текстовые поля на многостраничном объекте