
標記の件、御指導願います。
シート1:印刷設定(チェックボックスが印刷したいシート分あります)
シート2~34:チェックボックスがオンである表題のシートを選択し一括で印刷する。
を、VBAで作ってみましたが、エラー(インデックスが有効範囲にありません)が出てしまいます。
Sub CheckBoxPrint()
Dim ArrySheet() As String
Dim I As Long
Dim k As Long
k = 0
For I = 1 To 33
If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then
ReDim Preserve ArrySheet(k)
ArrySheet(k) = ActiveSheet.DrawingObjects("CheckBox" & I).Object.Caption
k = k + 1
End If
Next I
ThisWorkbook.Worksheets(ArrySheet).PrintOut ←エラー(インデックスが有効範囲にありません)
Erase ArrySheet
End Sub
このエラーを回避する方法を御指導してください。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
エラーが出たからとすぐWEBなんぞに質問してませんか。
まず下記のように(確認用・・・の個所)でもして、自分がプログラムで設定した内容を確かめるクセを付けること。
Sub CheckBoxPrint()
Dim ArrySheet() As String
Dim I As Long
Dim k As Long
k = 0
For I = 1 To Sheets.Count - 1
If ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = True Then
ReDim Preserve ArrySheet(k)
ArrySheet(k) = ActiveSheet.DrawingObjects("CheckBox" & I).Object.Caption
k = k + 1
End If
Next I
For Each cc In ArrySheet '<----確認用に入れてみる。こういうことをすることがデバッグで大切
MsgBox cc
Next
ThisWorkbook.Worksheets(ArrySheet).PrintOut '←エラー(インデックスが有効範囲にありません)
Erase ArrySheet
End Sub
上記のMsgbox no表示が質問者の思っている表示(シート名のはずだが)と正しいですか。
私は不自然だがチェックボックスのCaptionをSheetXXにそれぞれ変えて実行して、印刷は行われた。
ーー
わたしのテスト
Sheet1-Sheet4のシートとあり。
Sheet1に3つチェックボックスを貼り付け。2つだけON
ChechBox1のCaption-->Sheet2
ChechBox2のCaption-->Sheet3
ChechBox3のCaption-->Sheet4
このステップが行われていないか、Sheet名と食い違うのでは。
imogasi様
ご回答ありがとうございました。
ご指摘の通り、シート名に誤記がありました。
確認不足でした。。
今後はデバックしていくスキルも勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) シートを選択して、1つのPDFにしたいのですが。 5 2022/10/03 20:18
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 特定のシートを印刷不可...
-
エクセルファイルを開く時、常...
-
エクセルの行タイトルを特定の...
-
マクロで印刷→セルの値から部数...
-
エクセルのマクロで複数シート...
-
エクセル印刷時 一枚の書類に...
-
1ヶ月分の日付を一度に出す方法...
-
特定のセルに数値が入っている...
-
エクセルで行番号、列アルファ...
-
エクセルで複数のシートの1枚目...
-
エクセルの一部のセルの背景色...
-
エクセルマクロで差し込みした...
-
エクセルのシート名を印刷した...
-
エクセルの複数シートをNアップ...
-
【Excel】複数シートがあるエク...
-
行タイトルを最終ページだけ表...
-
Excelであるシートだけ印刷でき...
-
エクセルでシートの色がグレー...
-
カラーで一括印刷したいです
-
エクセルのページ設定を他のペ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
Excel 特定のシートを印刷不可...
-
エクセルの行タイトルを特定の...
-
エクセルの一部のセルの背景色...
-
マクロで印刷→セルの値から部数...
-
エクセル印刷時 一枚の書類に...
-
エクセルで複数のシートの1枚目...
-
エクセルで行番号、列アルファ...
-
エクセルのマクロで複数シート...
-
1ヶ月分の日付を一度に出す方法...
-
特定のセルに数値が入っている...
-
エクセルのシート名を印刷した...
-
Excel 2シートを1枚に印刷した...
-
【Excel】複数シートがあるエク...
-
Excelであるシートだけ印刷でき...
-
エクセルでのヘッダーをページ...
-
Excelでシートを複数シート選択...
-
行タイトルを最終ページだけ表...
-
エクセルの複数シートをNアップ...
-
エクセルで、ヘッダーに他のシ...
おすすめ情報