解决:与VBAcheckbox的麻烦
我正在尝试创build一个将从工作簿中打印所选工作表的macros。 第一个工作表有一组checkbox,都遵循命名约定“CheckBoxX”,其中X是该checkbox的编号。 我想要的代码是通过每个checkbox运行,看看是否被选中,然后select相应的工作表,如果它被选中。 但是,我收到一个错误“对象不支持此属性或方法”。
这是我的代码:代码:
Option Explicit Sub Button14_Click() Dim count As Integer Dim checkNumber As String For count = 1 To ThisWorkbook.Worksheets.count checkNumber = "CheckBox" & count If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = True Then Worksheets(count + 1).Select (False) End If Next count ActiveWindow.SelectedSheets.PrintOut End Sub
debugging总是用if语句标记行。
我也试过这个作为我的if语句:
If Sheets("Print").Shapes(checkNumber).ControlFormat.Value = 1 Then
解决方法:我所要做的就是改变这一行:
If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = True Then
对此:
If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Object.Value = True Then
假设您正在使用checkbox的ActiveX
types(您的代码中的OLEObject
暗示),则您正在访问Shape
对象的列表,而不是OLEObjects
的列表。
一个快速testing子是:
Sub test() Dim mycb As Variant Set mycb = ActiveSheet.OLEObjects("CheckBox1") Debug.Print mycb.Name Debug.Print mycb.Object.Value End Sub
您可能需要“checkbox1”而不是“checkbox1”