2017-04-25 203 views
0

我想创建一个宏,将打印选定工作簿中的工作簿。第一个工作表有一组复选框,它们都遵循命名约定“CheckBoxX”,其中X是该复选框的编号。我想要的代码是通过这些复选框运行的,看看它是否被选中,然后选中相应的工作表(如果选中)。但是,我收到错误“对象不支持此属性或方法”。解决:与VBA复选框的问题

这里是我的代码: 代码:

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 

调试时总要标记的if语句行。

我也试过这个作为我的if语句:

If Sheets("Print").Shapes(checkNumber).ControlFormat.Value = 1 Then 

SOLUTION:我所要做的就是改变这一行:

If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = True Then 

这样:

If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Object.Value = True Then 
+0

是你的复选框的ActiveX型或表格型? –

+0

它们是ActiveX – NewBoard

回答

0

您可能需要“复选框1”而非“Checkbox1”

+0

我试过各种不同的间距。使用该建议,我只是得到错误“没有找到具有指定名称的项目” – NewBoard

1

假设你正在使用的ActiveX类型复选框(在你的代码OLEObject暗示),您正在访问Shape的对象,而不是OLEObjects名单列表。

快速测试子是:

Sub test() 
    Dim mycb As Variant 
    Set mycb = ActiveSheet.OLEObjects("CheckBox1") 
    Debug.Print mycb.Name 
    Debug.Print mycb.Object.Value 
End Sub