連続印刷を実行するマクロの書き方は3段階に分けて説明します。
↓
第2段階 1枚目から5枚目まで連続印刷する
↓
結論だけ知りたい!という先生は次の第3段階まで進んで構いません。
しっかり基礎を固めていきたい。という先生はこのまま読み進めてください。
1枚目から5枚目を印刷するマクロ
[印刷一覧]B2セルへの値の入力
[印刷レイアウト]の印刷
を次のように繰り返す。
① "1" を入力する
↓
② 印刷する
↓
③ "2" を入力する
↓
④ 印刷する
↓
⑤ "3" を入力する
↓
⑥ 印刷する
↓
⑦ "4" を入力する
↓
⑧ 印刷する
↓
⑨ "5" を入力する
↓
⑩ 印刷する
処理①~⑩をワンクリックで実行するマクロを作成します。
作成手順
- VBEを開く
- コード作成
- ボタンに「マクロの登録」し直す
1.VBEを開く
① [Alt,F11]・・・VBEをひらく
② [Windows,←][Windows,→]・・・左右に並べて表示する
4. コード作成
① [Module1]のコードを編集する
Sub 連続印刷1枚目()
Worksheets("印刷一覧").Cells(2,2) = 1
Worksheets("印刷レイアウト").PrintOut
End Sub
↓
Option Explicit
Sub 連続印刷1枚目から5枚目()
Dim i as long
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next
End Sub
第2段階のコードは完成です。
書き換えた部分について、解説していきます。
コードの解説
Option Explicit
Sub 連続印刷1枚目から5枚目()
Dim i as long
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next
End Sub
1行目
Option Explicit
変数の宣言を強制
「変数の宣言を強制する」ための命令文です。
「変数」を扱う上で、記載すべきコードです。
(「変数」については後述します。)
コードをベタ打ちするのは手間ですので、自動で入力する方法を紹介します。
① VBEで[ツール]-[オプション]をクリック
② 「自動構文チェック」をOFFにする
③ 「変数の宣言を強制する」をONにする
④[OK]をクリック
⑤ VBEで[挿入]-[標準モジュール]をクリック
⑥ "Option Explicit"が入力された[Module2]ができる
「変数の宣言の強制」をONにすると、新しく標準モジュールを挿入したタイミングで「Option Explicit」が補完されるようになります。
一度設定してしまえば、これ以降改めて設定し直す必要はありません。
補足1
この「変数の宣言を強制する」は、一般的には、ExcelVBAを学ぶときまずはじめに行うべき設定だと言われています。
しかし、本サイトではあえて触れてきませんでした。
これまで「変数」を扱うことがなかったからです。
しかし、連続印刷を実行するマクロには「変数」は欠かせません。
ですので、このタイミングで説明に加えました。
本サイトでは、校務に活用する範疇で「変数」を扱い、説明をしていきます。
2行目
Sub 連続印刷1枚目から5枚目()
マクロ名の変更
マクロ名はどんな処理をするのか、できるだけ具体的に書くようにします。
前回「マクロの登録をする」ときにリストからマクロ名を選択しました。
マクロの数が増えていったとしても、判別しやすいように工夫しましょう。
3行目
Dim i as long
訳:
「長整数として変数 i を使うこと宣言します」
変数 i の宣言
この宣言があることで、変数 i を処理の中で使っていくことができます。
long(長整数)について詳しく知りたい方は「VBA long」で検索すると解説ページがたくさん出てきますので、調べてみてください。
4-7行目
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next
訳:
「変数 i を 1 から 5 まで1ずつ増やしながら
[印刷一覧]のセルB2に変数 i を代入して
[印刷レイアウト]を印刷する
という処理を繰り返す」
For・・・Next
For・・・Nextは、間にある処理を回数分繰り返し実行する命令文です。
補足2
For・・・Next文について、補足します。
次の2つのコードを見比べてみてください。
For・・・Nextありの例
Option Explicit
Sub 連続印刷1枚目から5枚目()
Dim i as long
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next
End Sub
For・・・Nextなしの例
Option Explicit
Sub 連続印刷1枚目から5枚目()
Worksheets("印刷一覧").Cells(2,2) = 1
Worksheets("印刷レイアウト").PrintOut
Worksheets("印刷一覧").Cells(2,2) = 2
Worksheets("印刷レイアウト").PrintOut
Worksheets("印刷一覧").Cells(2,2) = 3
Worksheets("印刷レイアウト").PrintOut
Worksheets("印刷一覧").Cells(2,2) = 4
Worksheets("印刷レイアウト").PrintOut
Worksheets("印刷一覧").Cells(2,2) = 5
Worksheets("印刷レイアウト").PrintOut
End Sub
ExcelVBAでは、同じコードを書くことは極力さけます。
For・・・Nextなしの例では、青字のコードが5回も繰り返し記載されています。
一方、For・・・Nextありの方は、1回の記載で済んでいます。
印刷枚数5枚の例ですので違いをあまり感じませんが、もし100枚印刷するとなったらどうでしょうか。
For・・・Next文を使わないとなると、100回も記載しなければならなくなります。
マクロを使うメリットが感じられませんよね。
For・・・Next文は連続印刷のマクロを組むときに不可欠ですので、必ず身につけましょう。
コードの解説は以上です。
最後に編集したマクロを[印刷一覧]のボタンに登録し直します。
3.ボタンに「マクロの登録」をし直す
①[印刷一覧]シートを開く
↓
② B5セルあたりのボタンを右クリックする
↓
③「 マクロの登録」をクリック
↓
④ 「連続印刷1枚目から5枚目」を選択してOK
試しにクリックしてみてください。
ワンクリックするだけで、5枚分の印刷が実行されます。
まとめ・次回
『第二部-1枚目から5枚目まで連続印刷する』は以上です。
連続印刷ができるようになったものの、まだ実用的ではありません。
開始番号と終了番号がコード内にベタ打ちされているためです。
印刷する番号を指定するのに、[Alt,F11]でVBEを起動してコードを書き換えることは誰にでもできることではありません。
どの先生にも容易に連続印刷を実行してもらえるように、さらに工夫を加えます。
具体的には[印刷一覧]B2,B3セルの値から印刷する番号を指定できるようにします。
次回はいよいよ『第3段階-m枚目からn枚目まで連続印刷する』を説明します。
これまでのファイルを引き続き編集していきますので、保存しておきましょう。
<< 3-連続印刷マクロを組む① |
>> 5-連続印刷マクロを組む③ |