我对VBA非常陌生(并且只在Excel中知道它)。在我的excel页面骑自行车通过一些复选框
我想通过一些(但不是全部)复选框循环。它们目前通过CheckBox15命名为CheckBox1。 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
当然,在循环没有对结果的影响,但它编译和atLeastOneChecked从假变为真时Checkbox2是真正。请注意,Sheet2已被命名为ActiveX。我显然不明白Worksheet和Controls如何工作。有人可以帮忙吗?
修复下面所述的错误后,这仍然不起作用。我简化如下:
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语句中应该引用的内容,但我不知道如何。
您遇到的一个错误是您在使用'Worksheets'时正在使用'Worksheet'。为了赶上这一点,在模块的顶部输入“Option Explicit”。 – Brad
谢谢 - 改变了,但它仍然无法正常工作。我知道为什么,但我不知道解决问题的办法。问题在于Worksheet没有“控件”成员。它有OLEobjects和Shapes,但我似乎无法让它工作。 – RoryG