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

Excel VBAをこれから始めてみようとしている超初心者です。
手始めとして、以下の処理をさせてやろうかと思っていたのですが
いきなり挫折しまいました。。

◎Sheet1から順番に最終シートまでを連続印刷。
◎最終シートまで印刷されたら処理終了で、Sheet1を表示させる。

・データによってシート数は変動する。最終がSheet50の時もあれば
 Sheet300の時もあり。
・シート名は「Sheet」+半角数字で、連続している。

シート名を変数にして、1ずつ加えていって…と考えながら、色々と
繰り返し処理についてもネットで調べてみたのですが、結局頭の中で
行き詰ってしまいました。
非常に簡単な処理だとは思うのですが、どのような書き方があるのか
ご教示頂ければ助かります。

宜しくお願いします。

A 回答 (3件)

> 例えばシートの並びが、「資料1」「資料2」「sheet1」~


「sheet50」とある場合で、「資料1」「資料2」を飛ばして印刷せず
「sheet1」から始まって残りを全て印刷というパターン

資料という文字が入っていないシートを全て印刷するならこんな感じかな。

Sub test02()
For Each sh In Worksheets
sh.Activate
If Not ActiveSheet.Name Like "*資料*" Then
ActiveSheet.PrintOut
End If
Next
Worksheets(1).Activate
End Sub
    • good
    • 0
この回答へのお礼

なるほど。
If~Elseで「資料~」をはじいてしまえば良かったのですね。
ご丁寧に有難うございましたm(_ _)m。

お礼日時:2008/01/07 08:39

もう既に模範解答が出ていますので蛇足ですが、



WorkBook.Sheets.CountでWorkbookの総シート数を取得することができます。ご参考までに。

For i=1 to WorkBook.Sheets.Count
Worksheets(i).Activate
ActiveSheet.PrintOut
next
Worksheets(1).Activate
    • good
    • 0
この回答へのお礼

WorkBook.Sheets.Countは知りませんでした。
今回使いそうな気がするので、参考にさせて頂きます。
有難うございますm(_ _)m。

お礼日時:2008/01/07 08:48

Sub test01()


For Each sh In Worksheets
sh.Activate
ActiveSheet.PrintOut
Next
Worksheets(1).Activate
End Sub

この回答への補足

早速のご回答有難うございます。

For Each ~ Next はこう使うのですね。勉強になります。まだこう
いった構文もろくに頭に入っていないもので難儀しております。
少し加工して、何とかエラーも出ず、実行できました。

ついては、ずうずうしくも、もう1点お教え頂けませんでしょうか。
ご回答を頂いた例は、最初から最後まで全シートを印刷するパターン
ですが、例えばシートの並びが、「資料1」「資料2」「sheet1」~
「sheet50」とある場合で、「資料1」「資料2」を飛ばして印刷せず
「sheet1」から始まって残りを全て印刷というパターンでは、上記の
構文で対応できるのでしょうか?

続いてお手間取らせて申し訳ありませんが、宜しくお願いしますm(_ _)m

補足日時:2008/01/04 14:22
    • good
    • 0

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