エクセルVBAでテキストボックスに入力した数字で印刷枚数を指定する

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

ユーザーフォームに配置したテキストボックスに入力した数字に応じて印刷枚数が指定できたら便利だと思いませんか?

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

EXCEL-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コードは赤字の部分です。

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. マクロ記録終了
波乗りアヒル

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

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。