解决:与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的ActiveXtypes(您的代码中的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”