アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル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もすべて書き直しと言う状況になってしまいます。
何か打開策はありますでしょうか?
よろしくお願いいたします。

A 回答 (2件)

でしたら、サブルーチン、関数を定義します。



' メインの処理
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行と少しです。
シート名が変わっても、メインの処理を書き直すだけで済みます。
    • good
    • 1
この回答へのお礼

OH! そんなやり方もあるのですね 納得いたしましました
早々のお返事ありがとうございました。

お礼日時:2006/06/06 11:11

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
    • good
    • 1
この回答へのお礼

これだとシート命変わっても問題なさそうですね^^
早速のお返事ありがとうございました。

お礼日時:2006/06/06 11:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!