我在窗口只添加标签、文本框和命令按钮,
可是下面程序运行后,却提示CtlA的取值包括true和false,
什么原因呢,以及如何在判断中把这两个值去掉,谢谢!Private Sub checkData()
Dim CtlA
For Each CtlA In Controls
If Not (TypeOf CtlA Is Label Or TypeOf CtlA Is Command) Then
If CtlA.Text = "" Then
MsgBox CtlA.Text & "不能为空", vbOKOnly + vbExclamation, "警告"
CtlA.SetFocus
Exit Sub
End If
MsgBox CtlA
End If
Next
End Sub
可是下面程序运行后,却提示CtlA的取值包括true和false,
什么原因呢,以及如何在判断中把这两个值去掉,谢谢!Private Sub checkData()
Dim CtlA
For Each CtlA In Controls
If Not (TypeOf CtlA Is Label Or TypeOf CtlA Is Command) Then
If CtlA.Text = "" Then
MsgBox CtlA.Text & "不能为空", vbOKOnly + vbExclamation, "警告"
CtlA.SetFocus
Exit Sub
End If
MsgBox CtlA
End If
Next
End Sub
checkData
End SubPrivate Sub checkData()
Dim CtlA
For Each CtlA In Controls
If Not (TypeOf CtlA Is Label Or TypeOf CtlA Is CommandButton) Then
If CtlA.Text = "" Then
MsgBox CtlA.Name & "不能为空", vbOKOnly + vbExclamation, "警告"
CtlA.SetFocus
Exit Sub
End If
MsgBox CtlA.Text
End If
Next
End Sub
Dim CtlA As Control
For Each CtlA In Controls
If (TypeOf CtlA Is TextBox Or TypeOf CtlA Is ComboBox) Then
If CtlA.Text = "" Then
MsgBox CtlA.Name & "不能为空", vbOKOnly + vbExclamation, "警告"
CtlA.SetFocus
Exit Sub
End If
MsgBox CtlA
End If
Next
End Sub
关键是你对Controls集合的理解还有问题,就按你的程序,我们看一下:
Dim CtlA
For Each CtlA In Controls
TypeOf CtlA Is Label ' 这个条件语句中,CtlA是做为整个对象引用
CtlA.Text = "" ' 这个是引用了CtlA对象的Text属性。
'当然你已经正确地使用前面两个了
MsgBox CtlA ' 而这句呢?他引用的是CtlA对象的默认属性。
Next
对于你程序中的Command来讲,是其Value属性,自然就返回True或False了。
也就是说,当CtlA是文本框时,msgbox CtlA显示文本框的text属性,当它是label时,显示Caption属性。