VB6.0多组文本框数组,如何判断全空?

三个文本框控件数组:txtA(0)~txtA(20)、txtB(0)~txtB(9)、txtC(0)~txtC(36),再加一个独立文本框txtD,合起来一共是69个文本框,想实现循环判断:
如果这69个文本框内全是空的,一个数都没有,则提示“数据为空,操作无效”;
否则,哪怕这69个文本框只有一个有数据,就进行数据处理。
下面是我的笨方法,不知道还有没有更高级的方法。
Private Sub CmdSave_Click()
Dim i As Integer
'判断文本框是否全空。
For i = 0 To txtA.UBound
If Trim(txtA(i).Text) <> "" Then GoTo SOLVE
Next
For i = 0 To txtB.UBound
If Trim(txtB(i).Text) <> "" Then GoTo SOLVE
Next
For i = 0 To txtC.UBound
If Trim(txtC(i).Text) <> "" Then GoTo SOLVE
Next

If Trim(txtD.Text) <> "" Then GoTo SOLVE
MsgBox "记录为空,本操作无效", , "提示"
Exit Sub

SOLVE:
……数据处理过程……
End Sub

这个问题很简单,主要通过for each来处理就可以了

Dim obj
Dim flag As Boolean
For Each obj In Me.Controls
If TypeOf obj Is TextBox Then
'在这里判断的是所有窗体上的文本框,如果有不为空的就处理
'在这里你还可以通过obj.name是否等于txtA txtB txtC等判断。
'如果想更详细的了解的话,可以暂时将下面的exit for 注释掉,然后把下面一行的注释取消
'Debug.Print obj.Name
If obj.Text <> "" Then
flag = True
Exit For
End If
End If
Next

If flag Then
'说明有非空文本框,处理过程
Debug.Print "有文本非空,需要处理"
End If
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-30
楼上的方法都忽略了一个问题 如果窗体上还有其它的文本框控件 一样会被记入 把一楼的稍微改下
Dim obj
Dim flag As Boolean
For Each obj In Me.Controls
If TypeOf obj Is TextBox and (instr(1.bojname,"txtA")>0 _
_ or instr(1.bojname,"txtB")>0 or instr(1.bojname,"txtC")>0) Then
If obj.text1<>"" then
'处理代码
exit for
end if
end if
next
第2个回答  2010-09-30
可以判断的,先用一个循环获得页面所有的控件,通过判断,控件是否是
TextBox,如果是的话,进行判断控件的 text 属性
下面是我的代码,你可以运行看看,放在按钮的点击事件里面

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objControls As Object
' 以下两个参数,一个用来确定一共有多少个 TextBox
'另一个用来确定一共有多少个 空 TextBox
Dim textboxCount, nullStrCount As Integer
textboxCount = 0 : nullStrCount = 0
For Each objControls In Me.Controls
If TypeOf (objControls) Is TextBox Then
textboxCount = textboxCount + 1
If objControls.text.trim = "" Then
nullStrCount = nullStrCount + 1
End If
End If
Next
If textboxCount <= nullStrCount Then
MsgBox("数据全为空")
Else
MsgBox("正在执行")
End If
End Sub
第3个回答  2010-09-30
你的代码是目前较通用的代码,楼上的几位并没有实质改变此方法。
第4个回答  2010-09-30
从速度上看,ljl88900的方法最佳。
第5个回答  2010-09-30
我有个方法不知道能不能行
你可以试试
先声明一个布尔值的全局变量a
再在那个窗体的load事件里写上a=false
然后在txta,txtb,txtc,txtd的change事件里面写上
a=true
然后你就可以根据a的值来判断是不是空的了
相似回答