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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA 循环遍历界面获取CheckBox 选中状态,并返回CheckBox.Text上的内容相关的知识,希望对你有一定的参考价值。

循环获取的代码如下,界面中包含了 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环境下 执行不了,有什么别的方法去替换么?
求指点!

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;


参考技术A 用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

gridview获取checkbox的选中行

我想要的效果是如果有十行我选中了五行,结果就是得到五,就是得到的结果是选中了多少行

程序如下:

foreach(GridViewRow rowview in GridView1.Rows) //遍历Gridview中的每一行 

//假设gridview中的复选框放在第一列,id是“CheckBox1”
CheckBox check = (CheckBox)rowview.Cells[0].FindControl("CheckBox1");//找到了checkbox控件

if(check.Checked)//如果被选中


...
//假设把每一行的id放在第二列
string myid = rowview.Cells[1].text;//这就是所在行的id,赋值给了myid
....


参考技术A 你可以在JS或者后台实现,
定义一个变量i=0,
遍历gridview行,
获得每行的checkbox控件,
如果checkbox选中,则checkbox加1,
最后获取i的值本回答被提问者和网友采纳
参考技术B 这个非常简单,这简单的功能就不要用服务器端了,直接js就可以搞定
对gridview所对应的生成的table进行循环判断,如果勾选则加1,然后将累加的值返回
参考技术C 写一个循环,检查checkbox
for(int i=0;i<gridview1.rows.count;i++)
int j=0;
if(gridview.rows[1]["checkbox的行数"]==value)
j=j+1;

// j 就是你要的结果
大概是这样,你修改调试,看下能行不
参考技术D int count=0;
foreach (GridViewRow gr in this.GridView1.Rows)

CheckBox cbk = gr.FindControl("cbk") as CheckBox;
if (cbk != null && cbk.Checked==true)

count++;

以上是关于VBA 循环遍历界面获取CheckBox 选中状态,并返回CheckBox.Text上的内容的主要内容,如果未能解决你的问题,请参考以下文章

gridview获取checkbox的选中行

jquery 循环遍历选中的多选复选框checkbox

如何遍历并获取listview中checkbox是不是选中以及该项的id?

怎么获取一组checkbox选中的值

怎么获取checkbox选中状态方法

JSP中如何获取checkbox的状态(选中或非选中)?