ユーザーフォームに配置したテキストボックスに印刷したい枚数を入力して、コマンドボタンを押すと指定した枚数を印刷できるようにします。
ワークシート上で【ファイル】➡【印刷】でページ数や枚数を設定できますが、ボタンひとつで実行できた方が仕事が早いですよね。

左図のように、テキストボックスに印刷したい枚数を数字で入力して、【印刷実行】のコマンドボタンを押せば、印刷できるようにするととても便利で、作業効率化できますよね。
もちろん、開始ページと終了ページは予め決めておく必要がありますけどね。
印刷実行のPrintOutメソッド
このページにたどり着いたという事は、印刷の基本VBAコードはご存知の方がほとんどだと思いますので、ここでは省略します。
なぜならば、ユーザーフォームに配置したテキストボックスに、印刷したい枚数を入力してコマンドボタンを押すと印刷できるようにしたいという要望でしょうね。
エクセルVBAを覚え始めた頃、なかなかこのような事例が少なくてできるようになるまでに苦労したので、印刷できるようになったVBAコードを記載しました。
Select Caseステートメントを使う方法
このSelectCaseステートメントは一般的に複数の条件分岐なんて言われていて、条件に応じて処理を振り分けることができるんです。
ここで言う、テキストボックスの値(数字)によって、印刷枚数を決めて処理(印刷)をするってことができるようになります。
Private Sub CommandButton1_Click()
Select Case TextBox1
Case Is = 1
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=1, COLLATE _
:=True
Case Is = 2
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=2, COLLATE _
:=True
Case Is = 3
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=3, COLLATE _
:=True
End Select
End Sub
- コマンドボタン1がクリックされたら
- SelectCaseステートメント開始、テキストボックス1の値が
- 1の場合
- 表示されているシートを選んで1ページ目~2ページ目を1枚印刷する
- 2の場合
- 表示されているシートを選んで1ページ目~2ページ目を2枚印刷する
- 3の場合
- 表示されているシートを選んで1ページ目~2ページ目を3枚印刷する
- SelectCaseステートメント終了
- マクロ記録終了
上記VBAコードはテキストボックスに入力する値が1~3にしてあるので、印刷枚数は1枚~3枚ってことになります。
もっと印刷枚数を設定したいならば、Case Is = 4 以降を繰り返し追加していけば印刷可能になります。
ただ、このままだと、テキストボックスが空欄の時に誤ってコマンドボタンを押してしまうとエラーになってしまいます!
Ifとメッセージを組み合わせてエラー回避
もし、テキストボックスが空欄だったらメッセージを出して処理を止めれば、エラー回避できるので、先ほどのVBAコードに組み入れておくことをおススメします。
Private Sub CommandButton1_Click()
If TextBox1.Value = “” Then
MsgBox “印刷枚数を入力してください”
Else
Select Case TextBox1
Case Is = 1
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=1, COLLATE _
:=True
Case Is = 2
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=2, COLLATE _
:=True
Case Is = 3
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=2, COPIES:=3, COLLATE _
:=True
End Select
End If
End Sub
- コマンドボタン1がクリックされたら
- もしテキストボックス1が空欄だったら
- 「印刷枚数を入力してください」とメッセージ表示する
- そうでなかったら(空欄でない場合)
- SelectCaseステートメント開始、テキストボックス1の値が
- 1の場合
- 表示されているシートを選んで1ページ目~2ページ目を1枚印刷する
- 2の場合
- 表示されているシートを選んで1ページ目~2ページ目を2枚印刷する
- 3の場合
- 表示されているシートを選んで1ページ目~2ページ目を3枚印刷する
- SelectCaseステートメント終了
- Ifステートメント終了
- マクロ記録終了
これで、テキストボックスが空欄の時はメッセージでお知らせしてくれて、必要枚数をいんさつできるようになります。

Excel-VBAを使えば数分かかる作業がたったの1秒で終了しますよ!