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

三个文本框控件数组:txtA(0)~txtA(20)、txtB(0)~txtB(9)、txtC(0)~txtC(36),再加一个独立文本框txtD,合起来一共是69个文本... 三个文本框控件数组: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
展开
 我来答
oaita
2010-09-30 · TA获得超过708个赞
知道小有建树答主
回答量:669
采纳率:100%
帮助的人:807万
展开全部
这个问题很简单,主要通过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
uterfu
2010-09-30 · TA获得超过4227个赞
知道大有可为答主
回答量:4548
采纳率:33%
帮助的人:4775万
展开全部
楼上的方法都忽略了一个问题 如果窗体上还有其它的文本框控件 一样会被记入 把一楼的稍微改下
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
suxueduwang
2010-09-30 · TA获得超过654个赞
知道小有建树答主
回答量:209
采纳率:33%
帮助的人:239万
展开全部
可以判断的,先用一个循环获得页面所有的控件,通过判断,控件是否是
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljl88900
2010-09-30 · TA获得超过2661个赞
知道大有可为答主
回答量:2197
采纳率:100%
帮助的人:2635万
展开全部
你的代码是目前较通用的代码,楼上的几位并没有实质改变此方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ouzhouren0003
2010-09-30 · TA获得超过475个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:194万
展开全部
从速度上看,ljl88900的方法最佳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
定格540760448
2010-09-30
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
我有个方法不知道能不能行
你可以试试
先声明一个布尔值的全局变量a
再在那个窗体的load事件里写上a=false
然后在txta,txtb,txtc,txtd的change事件里面写上
a=true
然后你就可以根据a的值来判断是不是空的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式