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 - 试图找到复选框的名称,无法获取值属性错误的主要内容,如果未能解决你的问题,请参考以下文章