ユーザーフォームに配置したテキストボックスに入力した数字に応じて印刷枚数が指定できたら便利だと思いませんか?
ワークシート上で【ファイル】➡【印刷】でページ数や枚数を設定できますが、ボタンひとつで実行できた方が仕事が早いですよね。
EXCEL-VBAならば、このような印刷ダイアログでの作業が無くなるのでとても便利なのでご紹介します。
印刷実行フォームを作成する
![印刷実行ユーザーフォーム](https://tripbowl.net/wp-content/uploads/2019/03/0e9d631b45e1929adbc906e939c66292.jpg)
図のように、テキストボックスに印刷したい枚数を数字で入力して、【印刷実行】のコマンドボタンを押せば、印刷できるようにするととても便利で、作業効率化できますよね。
もちろん、開始ページと終了ページは予め決めておく必要がありますけどね。
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 以降を繰り返し追加していけば印刷可能になります。
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
ただ、このままだと、テキストボックスが空欄の時に誤ってコマンドボタンを押してしまうとエラーになってしまいます!
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が空欄だったら
- 「印刷枚数を入力してください」とメッセージ表示する
- そうでなかったら(空欄でない場合)
- SelectCaseステートメント開始、テキストボックス1の値が
- 1の場合
- 表示されているシートを選んで1ページ目~2ページ目を1枚印刷する
- 2の場合
- 表示されているシートを選んで1ページ目~2ページ目を2枚印刷する
- 3の場合
- 表示されているシートを選んで1ページ目~2ページ目を3枚印刷する
- SelectCaseステートメント終了
- Ifステートメント終了
- マクロ記録終了
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
![](https://tripbowl.net/wp-content/uploads/2018/07/cropped-512x512.jpg)
これで、テキストボックスが空欄の時はメッセージでお知らせしてくれて、必要枚数を印刷できるようになります。
関連記事
-
めんどうな印刷確認を省略してVBAで印刷範囲を指定して印刷する方法
表などを印刷する時に、印刷範囲が決まっていることが多いのに、毎回印刷プレビューで確認したりプリンターの設定確認をするのは面倒だと思いませんか? そこで予め印刷… -
VBAで印刷プレビューするとフリーズして操作不能になる時の対処法
エクセルで印刷する前に確認の為に印刷プレビューを実行することがあると思いますが、フリーズして操作不能になってしまった経験はありませんか? ユーザーフォームに間… -
エクセルVBAでテキストボックスに入力した数字で印刷枚数を指定する
ユーザーフォームに配置したテキストボックスに入力した数字に応じて印刷枚数が指定できたら便利だと思いませんか? ワークシート上で【ファイル】➡【印刷】でペ… -
エクセルVBAで未入力データがあるかどうか確認してから印刷する方法
エクセルで表や請求書などを印刷する時に、必要なデータが未入力のままで気づかずに印刷してしまったことありませんか? 紙の無駄になるので印刷する前に自動的に請求書… -
エクセルのセル値を取得して印刷ページ数・枚数を自動変更する方法
ページを印刷する時に、印刷ページや枚数を選ぶ作業って面倒だと思いませんか? エクセルで印刷するに毎回【ファイル】➡【印刷】を選ぶところから始まり、ページ…
紅葉スポット
-
妙義山パノラマパーク紅葉へバスで上州富岡駅から滞在時間35分
山が多い群馬県の中でも、赤城山・榛名山とともに妙義山を合わせて上毛三山と呼ばれる群馬県代表の山で、日本三大奇勝でもあり、岩肌が切り立った景観が特徴でもありま… -
フリーパスで12月の茨城紅葉スポットへ
茨城県内の人気紅葉スポット 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺から… -
古峯神社の天狗の御朱印と紅葉名所へ鹿沼駅からバスで行く
御朱印を集める趣味が流行っていますが、ここ古峯神社の御朱印は天狗をイメージしたデザインで何種類あるかわかないぐらい様々あります。 そして、紅葉見頃となる10月中… -
鬼怒川温泉駅からバスで川俣ダムと瀬戸合峡渡らっしゃい吊橋紅葉へ
【紅葉見頃】10月中旬~11月上旬 紅葉を見に日光を訪れて中禅寺湖周辺を目指して、大渋滞や混雑に巻き込まれて大変な思いをした方多いと思いますが、関東エリアの紅葉… -
奥日光湯滝や湯ノ湖へ東武バスの湯元温泉フリーパス終点の観光名所へ
【紅葉見頃】 10月中旬~10月下旬 紅葉時期の日光なのに空いている穴場スポットの湯滝や湯ノ湖をご存知ですか? 中禅寺湖周辺から戦場ヶ原を通り過ぎてさらに奥へ進む… -
榛名山からの景色や榛名湖の湖面に反射する紅葉したもみじへ
榛名山の麓の榛名湖は火山の噴火でできたカルデラ湖で周囲の榛名公園には、もみじが植えられていて秋になると真っ赤に染まります。 そして榛名山も夏の緑から紅葉の時期…