检查是不是选中了基于工作表的复选框
Posted
技术标签:
【中文标题】检查是不是选中了基于工作表的复选框【英文标题】:Checking if a worksheet-based checkbox is checked检查是否选中了基于工作表的复选框 【发布时间】:2012-07-29 07:42:51 【问题描述】:我正在尝试使用 IF 子句来确定是否选中了名为“复选框 1”的复选框。
我当前的代码:
Sub Button167_Click()
If ActiveSheet.Shapes("Check Box 1") = True Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
这不起作用。调试器告诉我
有问题ActiveSheet.Shapes("Check Box 1")
但是,我知道这段代码可以工作(即使它用于不同的目的):
ActiveSheet.Shapes("Check Box 1").Select
With Selection
.Value = xlOn
我的复选框(我的页面上有 200 个)位于 sheet1 中,名称为“Demande”。每个复选框都具有相同的格式名称“复选框...”。
【问题讨论】:
ActiveSheet.Shapes("Check Box 1").Value = True
?
表单控件复选框还是活动x控件复选框?
@Motes 有什么方法可以快速知道,而无需我启动 Parallels?
嗨,你能帮我以同样的方式在javascript中获取复选框的值
你可以使用CodeName
here找到另一个解决方案
【参考方案1】:
试试:Controls("Check Box 1") = True
【讨论】:
【参考方案2】:这是你正在尝试的吗?
Sub Sample()
Dim cb As Shape
Set cb = ActiveSheet.Shapes("Check Box 1")
If cb.OLEFormat.Object.Value = 1 Then
MsgBox "Checkbox is Checked"
Else
MsgBox "Checkbox is not Checked"
End If
End Sub
将Activesheet
替换为相关的工作表名称。同时将Check Box 1
替换为相关的复选框名称。
【讨论】:
这将选中该框,但要阅读它,您需要根据 1 设置检查值。 +1 我以前不知道这一点。我将删除我的回复,因为它可能会导致混乱。刚试了一下,发现它有效。在这种情况下,检查似乎由值 1 和 0 验证(不是真假)。 @Motes:是的。我已经添加了那部分。我正在阅读黑莓的帖子,所以误读了它。我以为用户想选中复选框。 :P 如果你重复使用形状参考,它可能会更有效,而且他这样做可能是为了可读性。 @PaoloBernasconi:您能解释一下您所说的效率较低是什么意思吗?它是如何降低效率的?【参考方案3】:Sub Button167_Click()
If ThisWorkbook.Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
Range("Y12").Value = 1
Else
Range("Y12").Value = 0
End If
End Sub
1 勾选,-4146 不勾选,2 混合(灰色框)
【讨论】:
这就像一个魅力。 @Siddharth,你的回答也是正确的 解析excel文件后如何在javascript代码中获取你的值。我需要 excel 工作簿 ***.com/questions/34064853/… 中的复选框值【参考方案4】:在previousanswers 的基础上,您可以利用True
为-1 和False
为0 的事实,并像这样缩短您的代码:
Sub Button167_Click()
Range("Y12").Value = _
Abs(Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0)
End Sub
如果复选框被选中,.Value
= 1。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
返回True
。
应用Abs
函数将True
转换为1
。
如果复选框未选中,.Value
= -4146。
Worksheets(1).Shapes("Check Box 1").OLEFormat.Object.Value > 0
返回False
。
应用Abs
函数将False
转换为0
。
【讨论】:
嗨,你能帮我以同样的方式在javascript中获取复选框的值【参考方案5】:似乎在您使用的 ActiveX 复选框控件的 VBA 宏代码中
If (ActiveSheet.OLEObjects("CheckBox1").Object.Value = True)
对于您使用的表单复选框控件
If (ActiveSheet.Shapes("CheckBox1").OLEFormat.Object.Value = 1)
【讨论】:
以上是关于检查是不是选中了基于工作表的复选框的主要内容,如果未能解决你的问题,请参考以下文章