2017-04-25 13 views
0

選択したシートをブックから印刷するマクロを作成しようとしています。最初のワークシートには、すべて「CheckBoxX」という命名規則に従う一連のチェックボックスがあり、Xはそのチェックボックスの番号です。コードを実行するには、これらの各チェックボックスを実行し、チェックされているかどうかを確認し、チェックされている場合は対応するワークシートを選択します。しかし、「オブジェクトがこのプロパティまたはメソッドをサポートしていません」というエラーが表示されます。 コード::if文で解決済み: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 Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Value = True Then 

If Sheets("Print").Shapes(checkNumber).OLEFormat.Object.Object.Value = True Then 
私がしなければならなかったすべては、この行を変更した:

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

SOLUTION

+0

はあなたのチェックボックスのActiveX型またはフォームタイプはありますか? –

+0

彼らはActiveXです – NewBoard

答えて

0

"チェックボックス1"いうより「CheckBox1を」

+0

私はあらゆる種類の異なる間隔を試しました。その提案を使用すると、「指定された名前のアイテムが見つかりませんでした」というエラーが表示されます – NewBoard

1

あなたがあなたの代わりにOLEObjectsのリストのShapeオブジェクトのリストにアクセスしている、(あなたのコード内OLEObjectを意味する)のチェックボックスのActiveXタイプを使用していると仮定。

簡単なテストサブは次のとおりです。

Sub test() 
    Dim mycb As Variant 
    Set mycb = ActiveSheet.OLEObjects("CheckBox1") 
    Debug.Print mycb.Name 
    Debug.Print mycb.Object.Value 
End Sub 
関連する問題