Надеюсь, это просто для кого-то там. У меня есть пользовательская форма Excel VBA с несколькими текстовыми полями для ввода параметров. Кроме того, есть изображение на пользовательской форме. Когда пользователь щелкает текстовое поле, изображение в пользовательской форме изменяется, вызывая событие _Enter () для отображения изображения соответствующего параметра. Это работает нормально и не является проблемой. Однако, когда пользователь выходит из текстового поля, я хочу, чтобы изображение вернулось к исходному изображению. Я попытался события для _Exit () и _AfterUpdate (), чтобы сделать эту работу, и хотя он работает нормально, если я обновляю параметр, он не работает, если я не обновляю параметр. По сути, изображение изменяется при вводе текстового поля, но не изменяется при выходе, если я не обновляю значение в текстовом поле.
У кого-нибудь есть идеи, почему это так и чем я могу бытьВ состоянии сделать с этим?
Обновление (с кодом по запросу). Теперь я выяснил, что событие Exit текстового поля не вызывается, потому что у меня есть более одного фрейма в пользовательской форме, и я нажимаю на элемент управления в другом фрейме. Я сделал следующий пример.
и следующий код;
Option Explicit
Dim TextBox1Data As Variant, TextBox2Data As Variant
Private Sub TextBox1_AfterUpdate()
TextBox1Data = TextBox1.Value
Debug.Print "AfterUpdate Textbox 1"
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit Textbox 1"
End Sub
Private Sub TextBox2_AfterUpdate()
TextBox2Data = TextBox2.Value
Debug.Print "AfterUpdate Textbox 2"
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit Textbox 2"
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Array("Item 1", "Item 2", "Item 3", "Item 4")
ComboBox1.Text = ComboBox1.List(1)
End Sub
Если я щелкаю в TextBox1 и затем щелкаю либо в ComboBox1, либо в CheckBox1, вызывается событие Exit для TextBox1,Однако, если я щелкаю в TextBox1, а затем щелкаю либо в CheckBox2, либо в CheckBox3, событие не инициируется. Я предполагаю, что это потому, что флажки находятся в другом кадре. Это тот случай? Есть ли способ вызвать событие Exit для TextBox при переходе от одного кадра к другому?