VBA 循环遍历界面获取CheckBox 选中状态,并返回CheckBox.Text上的内容 5

循环获取的代码如下,界面中包含了N个GroupBox,N个CheckBox,如遇到GroupBox那么循环跳入继续找CheckBox,直接完成遍历查找到所有打勾的Chec... 循环获取的代码如下,界面中包含了 N个GroupBox ,N 个CheckBox,如遇到GroupBox那么循环跳入继续找CheckBox,直接完成遍历 查找到所有打勾的CheckBox名字 最后 返回
Sub SearchControls(ByRef rControls, ByRef value)

For Each sControl In rControls
If TypeOf sControl Is CheckBox Then
If CType(sControl, CheckBox).Checked = True Then
value = vale + CType(sControl, CheckBox).Text '加入值
End If
End If
If TypeOf sControl Is GroupBox Then
SearchControls(CType(sControl, Control).Controls, value)
End If
Next

End Sub

代码是在 VB下写的,但是 CType 方法 在 VBA环境下 执行不了,有什么别的方法去替换么?
求指点!
展开
 我来答
枫叶朴璐
2015-02-11 · TA获得超过2606个赞
知道大有可为答主
回答量:7573
采纳率:0%
帮助的人:5917万
展开全部
protected void Page_Load(object sender, EventArgs e)
{
CheckBox chk = new CheckBox();
chk.Text = "testall"; // 这里可以换成数据库的内容
chk.CheckedChanged += new EventHandler(chk_CheckedChanged);
chk.AutoPostBack = true;
Page.Form.Controls.Add(chk);

for (int i = 0; i < 10; i++)
{
CheckBox chk2 = new CheckBox();
chk2.Text = "test" + i.ToString(); // 这里可以换成数据库的内容
chk2.Checked = (i % 3 == 0); // 这里可以换成数据库的内容
Page.Form.Controls.Add(chk2);
}

}

void chk_CheckedChanged(object sender, EventArgs e)
{
CheckBox all = sender as CheckBox;
foreach(Control ctl in Page.Form.Controls)
{
if (ctl is CheckBox)
{
CheckBox chk = ctl as CheckBox;
chk.Checked = all.Checked;
}
}
}
amajide
2020-05-30 · TA获得超过477个赞
知道小有建树答主
回答量:144
采纳率:74%
帮助的人:26.1万
展开全部
用TypeName代替CType,用.Caption代替.Text
Dim Ctr As Control
For Each Ctr In Me.Controls
If TypeName(Ctr) = "CheckBox" Then
If Ctr.Value Then Debug.Print Ctr.Caption
End If
Next
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式