2017-04-25 199 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