在我的userform中,如果TextBox不包含Numbers或为空,我想要MsgBox。
这是我的代码,但在另一种情况下,TextBox = ""
清空MsgBox对我来说,所以我的问题是空的TextBox。
Private Sub TB1_Change()
If TypeName(Me.TB1) = "TextBox" Then
With Me.ActiveControl
L12.Caption = Val(TB1.Text) * Val(TB2.Text)
If Not IsNumeric(.Value) And .Value <> vbNullString Then
MsgBox "Sorry, only numbers allowed"
.Value = vbNullString
End If
End With
End If
End Sub
答案 0 :(得分:2)
为此目的使用按键事件。
Private Sub TB1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
如果不是数字,此过程将忽略您输入的任何内容,但您可以修改条件和输出。例如,您可能允许输入小数点,或者您可能希望显示一个消息框 - 可能仅在第二次尝试时。
答案 1 :(得分:0)
由于您尝试仅允许“数字”和“空白”,因此下面的代码可以满足您的需求。
func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker)
答案 2 :(得分:0)
您可以使用AfterUpdate
事件的Change
事件处理程序而不是,也可能想要使用Exit
事件并取消退出输入无效值:
Option Explicit
Private Sub TB1_AfterUpdate()
'Check whether the value is numeric or empty:
If Not IsValNumeric(Me.TB1.Value) Then
MsgBox "Sorry, only numbers allowed"
Me.TB1.Value = vbNullString
Else:
'Do something...
MsgBox val(TB1.Text) * val(TB2.Text)
End If
End Sub
Private Sub TB1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Prevents the user from EXIT the TextBox if value is not numeric/empty
Cancel = Not IsNumeric(Me.TB1.Value)
End Sub
Private Function IsValNumeric(val$) As Boolean
Dim ret As Boolean
'check for numeric value only and allow empty value as a zero value
ret = IsNumeric(val) Or Len(val) = 0
IsValNumeric = ret
End Function
答案 3 :(得分:0)
您可以等到用户完成输入,然后测试该字段。
为了便于使用,消息框应替换为标题和图标/图片,如“必须在此处输入数字。”
当输入不正确时,这些将显示在文本框旁边。然后在输入更正时隐藏。可以阻止提交表单,直到所有错误都得到纠正。
这允许用户输入请求数据,然后修复任何输入错误。这比每次犯错都要好。
事件已从更改更改为退出。
Private Sub TB1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TypeName(Me.TB1) = "TextBox" Then
With Me.ActiveControl
L12.Caption = Val(TB1.Text) * Val(TB2.Text)
If Not IsNumeric(.Value) Or .Value = vbNullString Then
MsgBox "Sorry, only numbers allowed"
.Value = vbNullString
End If
End With
End If
End Sub
vbNullString 测试也已更新。