检查是不是选中了基于工作表的复选框

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中获取复选框的值 你可以使用CodeNamehere找到另一个解决方案 【参考方案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)

【讨论】:

以上是关于检查是不是选中了基于工作表的复选框的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是选中了所有复选框

如何检查是不是选中了复选框[重复]

如何检查单击时是不是选中了复选框?

Angular Material - 如何检查 selenium java 中是不是选中了复选框?

检查提交时是不是选中了所有复选框[重复]

如何检查复选框是不是被选中?