
エクセルVBAでシート毎に同じ動作をしたいのです。
例えば
A・B・C・D・E
とシートがあるのですが、A以外のものを全部印刷したいのです。
今までは
Worksheets("B").Select
Range("A1:AG44").Select
Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
Worksheets("C").Select
Range("A1:AG44").Select
Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
と これを繰り返していたのです。
これをやると文章も長くなりますし、シート名が変わったときには、VBAもすべて書き直しと言う状況になってしまいます。
何か打開策はありますでしょうか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Sub Print_Test()
For Each sh In Worksheets '全ワークシートに繰り返す
If sh.Name <> "A" Then 'シート名がAでなければ
sh.Range("A1:AG44").PrintOut From:=1, To:=1, Copies:=1, Collate:=True
End If
Next '次のシートに
End Sub
No.1
- 回答日時:
でしたら、サブルーチン、関数を定義します。
' メインの処理
Sub Print_All()
Call Print_1sheet("B")
Call Print_1sheet("C")
Call Print_1sheet("D")
Call Print_1sheet("E")
End Sub
' サブの処理
Function Print_1Sheet(strSheet as String)
Worksheets(strSheet).Select
Range("A1:AG44").Select
Selection.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
End Function
--
シート数が100になると、修正前の方法では400行、修正後は100行と少しです。
シート名が変わっても、メインの処理を書き直すだけで済みます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
エクセルシートの見出しの文字...
-
Nintendo Switch 2 キャリング...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルのファイルサイズが急...
-
EXCELの「シートの見出し」のフ...
-
エクセルのシー名を二段表示に...
-
エクセルでリンク貼り付けした...
-
エクセルの複数シートでのリン...
-
アクセスからエクセルのシート...
-
特定のシート名のシートのみ除...
-
Accessのテーブルを既存のExcel...
-
Excelのオートフィルター等のリ...
-
エクセルで複数のシートに画像...
-
EXCELの図形(テキストボックス)...
-
エクセル、別のシートの表をポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルシートの見出しの文字...
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
EXCELの図形(テキストボックス)...
-
EXCELで存在しないシート...
-
エクセルで複数のシートに画像...
-
エクセル、特定のシートにパス...
-
エクセルのシー名を二段表示に...
-
ワークシートそのものの色を変...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
エクセルのファイルサイズが急...
-
エクセルの複数シートでのリン...
-
エクセルで、シートの名前を変...
-
エクセルの2つのシートを並び...
-
EXCELの「シートの見出し」のフ...
-
Excelでマクロ設定したが反映さ...
おすすめ情報