Так что у меня есть книга Excel, которая открывает userform1 в событии openbook. Когда определенные условия выполняются в userform1, он вызывает процедуру, которая загружает и показывает userform2. Userform2 имеет ярлык, текстовое поле и кнопку. Эта проблема заключается в том, что события для текстового поля на userform2 не все правильно работают. События KeyUp & KeyDown срабатывают, как ожидалось, но события Change и AfterUpdate никогда не вызываются.
Я смог воспроизвести поведение в другой книге, которая значительно упрощена. Если вы вставляете или вставляете текстовую строку длиной более 7 символов в текстовое поле userform1, она загружает userform2. Желаемое поведение состоит в том, чтобы ввести трехзначное числовое значение в текстовое поле userform2 и вызвать sub из userform1. Это никогда не происходит. Кто-нибудь еще видел это поведение раньше? Как вы обходились?Userform Userform TextBox Управление поведением
UserForm1: (извините искусство Ascii, очевидно, не хватает репутации размещать изображения):/
Label1: [ Textbox1 ]
Label2:
[ CommandButton1 ]
Option Explicit
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1.TextLength >= 7 Then
Load UserForm2
UserForm2.Label1.Caption = "Value for " & Me.TextBox1.Text & "?"
UserForm2.Show
End If
End Sub
Public Sub Form2(data As Variant)
On Error GoTo eh
Me.Label2.Caption = Me.Label2.Caption & vbCrLf & Me.TextBox1.Text & vbTab & CStr(CLng(data))
eh:
If Err.Number = 13 Then
MsgBox "Please input a #"
UserForm2.TextBox1.SetFocus
ElseIf Err.Number = 0 Then
Unload UserForm2
End If
End Sub
USERFORM2:
label1: [ Textbox1 ]
[ CommandButton1 ]
Option Explicit
Private Sub CommandButton1_Click()
Call UserForm1.Form2(Me.TextBox1.Text)
End Sub
Private Sub TextBox1_Change()
'This event never fires
If Me.TextBox1.TextLength >= 3 Then
Call UserForm1.Form2(Me.TextBox1.Text)
Else
Debug.Print "here"
End If
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'This event fires
Debug.Print KeyCode
End Sub
Чад, я реплицировал вашу проблему и работаю ниже – Sam