我对 VBA 非常陌生(并且只在 excel 中知道它)。
我正在尝试循环浏览一些(但不是全部)复选框。它们目前被命名为 CheckBox1 到 CheckBox15。Howe 我如何循环通过例如 CheckBox5 到 CheckBox10?
我想我希望有一个类似于“CheckType”的“方法”用于控件,可以让我检查名称?
这是我尝试过的。导致编译错误 - 未定义子或函数,并突出显示工作表。
Private Sub BoxCheck()
atLeastOneChecked = False
For i = 2 To 4
If Worksheets("ActiveX").Controls("Checkbox" & i).Value = True Then
atLeastOneChecked = True
End If
Next i
End Sub
虽然以上不起作用,但以下内容起作用:
Private Sub BoxCheck()
atLeastOneChecked = False
For i = 1 To 2
If Sheet2.CheckBox2.Value = True Then
atLeastOneChecked = True
End If
Next i
End Sub
当然,循环对结果没有影响,但是当 Checkbox2 为 True 时,它会编译并且 atLeastOneChecked 从 False 变为 True。请注意,Sheet2 已被命名为 ActiveX。我显然不明白工作表和控件是如何工作的。有人可以帮忙吗?
修复下面描述的错误后,这仍然不起作用。我简化为以下内容:
Private Sub BoxCheck()
Dim ole As OLEObject
atLeastOneChecked = False
Set ole = Sheets("ActiveX").OLEObjects("Checkbox2")
If ole.Value = True Then
atLeastOneChecked = True
End If
End Sub
这行不通。它失败于:
If ole.Value = True Then
错误状态:对象不支持此属性或方法
这适用于 OLEObjects,但不适用于复选框。当我查看 ole 的属性时,我看到它的 Object 属性设置为 Object/Checkbox 并且这个 Object 有一个值。我想这就是我应该在 if 语句中引用的内容,但我不知道如何。