スポンサーリンク

テキストボックスの値で印刷部数を指定して印刷する

印刷テキストボックスExcel-VBA

ユーザーフォームに配置したテキストボックスに印刷したい枚数を入力して、コマンドボタンを押すと指定した枚数を印刷できるようにします。

波乗りアヒル
波乗りアヒル

ワークシート上で【ファイル】➡【印刷】でページ数や枚数を設定できますが、ボタンひとつで実行できた方が仕事が早いですよね。

左図のように、テキストボックスに印刷したい枚数を数字で入力して、【印刷実行】のコマンドボタンを押せば、印刷できるようにするととても便利で、作業効率化できますよね。

もちろん、開始ページと終了ページは予め決めておく必要がありますけどね。

スポンサーリンク

印刷実行のPrintOutメソッド

このページにたどり着いたという事は、印刷の基本VBAコードはご存知の方がほとんどだと思いますので、ここでは省略します。

なぜならば、ユーザーフォームに配置したテキストボックスに、印刷したい枚数を入力してコマンドボタンを押すと印刷できるようにしたいという要望でしょうね。

エクセルVBAを覚え始めた頃、なかなかこのような事例が少なくてできるようになるまでに苦労したので、印刷できるようになったVBAコードを記載しました。

Select Caseステートメントを使う方法

このSelectCaseステートメントは一般的に複数の条件分岐なんて言われていて、条件に応じて処理を振り分けることができるんです。

ここで言う、テキストボックスの値(数字)によって、印刷枚数を決めて処理(印刷)をするってことができるようになります。

VBAコード

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. コマンドボタン1がクリックされたら
  2. SelectCaseステートメント開始、テキストボックス1の値が
  3. 1の場合
  4. 表示されているシートを選んで1ページ目~2ページ目を1枚印刷する
  5. 2の場合
  6. 表示されているシートを選んで1ページ目~2ページ目を2枚印刷する
  7. 3の場合
  8. 表示されているシートを選んで1ページ目~2ページ目を3枚印刷する
  9. SelectCaseステートメント終了
  10. マクロ記録終了

上記VBAコードはテキストボックスに入力する値が1~3にしてあるので、印刷枚数は1枚~3枚ってことになります。

もっと印刷枚数を設定したいならば、Case Is = 4 以降を繰り返し追加していけば印刷可能になります。

波乗りアヒル
波乗りアヒル

ただ、このままだと、テキストボックスが空欄の時に誤ってコマンドボタンを押してしまうとエラーになってしまいます!

Ifとメッセージを組み合わせてエラー回避

もし、テキストボックスが空欄だったらメッセージを出して処理を止めれば、エラー回避できるので、先ほどのVBAコードに組み入れておくことをおススメします。

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がクリックされたら
  2. もしテキストボックス1が空欄だったら
  3. 「印刷枚数を入力してください」とメッセージ表示する
  4. そうでなかったら(空欄でない場合)
  5. SelectCaseステートメント開始、テキストボックス1の値が
  6. 1の場合
  7. 表示されているシートを選んで1ページ目~2ページ目を1枚印刷する
  8. 2の場合
  9. 表示されているシートを選んで1ページ目~2ページ目を2枚印刷する
  10. 3の場合
  11. 表示されているシートを選んで1ページ目~2ページ目を3枚印刷する
  12. SelectCaseステートメント終了
  13. Ifステートメント終了
  14. マクロ記録終了

これで、テキストボックスが空欄の時はメッセージでお知らせしてくれて、必要枚数をいんさつできるようになります。

Excel-VBAもくじへ

コメント