Очистить текстовое поле в многостраничной пользовательской форме при нажатии на текстовое поле

У меня небольшая проблема с некоторым кодированием 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 и т. Д. В соответствии с вашими потребностями, но с помощью этого кода вы сможете очищать текстовые поля на многостраничном объекте

Другие вопросы по тегам