Excel VBA 2016 - 试图找到复选框的名称,无法获取值属性错误

Posted

技术标签:

【中文标题】Excel VBA 2016 - 试图找到复选框的名称,无法获取值属性错误【英文标题】:Excel VBA 2016 - Trying to find name of checkbox, Unable to get value property error 【发布时间】:2019-09-28 18:18:25 【问题描述】:

这是我坚持的一个。

我有一个宏,可以一次打开一个文件夹/目录中的所有工作簿,并执行某些操作,其中之一是取消选中 .Range("K25:U56") 中的每个复选框,但有一个我希望它跳过的那个范围内的复选框(或者我现在要做的是,在取消选中范围内的所有框之前存储它的当前值,然后在所有取消选中发生后重新设置该值,任何)。我收到“找不到具有指定名称的项目。”使用以下行:

    ' Store checkbox50's value to return later
    Dim checkbox As Boolean
    If sh.CheckBoxes("Check Box 50").Enabled = True Then checkbox = True
    If sh.CheckBoxes("Check Box 50").Enabled = False Then checkbox = False

我也试过了:

    ' Store checkbox50's value to return later
    Dim checkbox As Boolean
    If sh.Shapes("Check Box 50").OLEFormat.Object.Value = True Then checkbox = True
    If sh.Shapes("Check Box 50").OLEFormat.Object.Value = False Then checkbox = False

...我得到“无法获取 CheckBox 类的 Value 属性。”这是我正在使用的屏幕截图(注意 Check Box 50 作为名称?) .

有什么想法吗?如果您想发布完整的代码,只需发表评论,但我想知道是否有不同的方式来搜索那个特定的复选框?谢谢!

【问题讨论】:

如果你遍历所有的复选框并打印出可能给你线索的名字 在一个论坛中,我读到他们将该命令列为sh.Shapes("Check Box 50").OLEFormat.Object.Object.Value,并指出该对象两次不是错字。没有解释为什么需要两次。 @TimWilliams 我确实尝试了一个循环来显示一个 msgbox 范围内的所有框名称,当我这样做时我看到它说“复选框 50”。呃。 @Tim 谢谢,我确实尝试过,但现在它给了我错误“对象不支持此属性或方法”? 让我们continue this discussion in chat。 【参考方案1】:

感谢@BigBen,我们发现问题是因为我正在循环浏览工作簿中的所有工作表,但并非每个工作表都有一个“复选框 50”,所以它正在寻找不存在的东西那些次要表。我将处理我的代码以反映这一点。谢谢!!!!

【讨论】:

以上是关于Excel VBA 2016 - 试图找到复选框的名称,无法获取值属性错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 2016 中使用 VBA 将选定范围移动到一列上

使用VBA获取Excel中所有复选框的值

如何从 VBA Access 中勾选 Excel 复选框

在Excel中使用VBA循环复选框非常慢

Excel VBA 复选框英语与法语

如何使用 VBA 从 Excel 用户窗体中读取复选框的值