緊急事態宣言発令中による営業について詳細へ

エクセルVBAで枚数指定印刷

船橋で遊ぶなら西船ボウル

2017年6月30日更新

ユーザーフォームを使って印刷

エクセルのマクロでボタンひとつで印刷できますが、印刷枚数が毎回異なる場合などもありますよね。エクセルVBAで自動印刷ページでも記述しましたが、指定したセルの値を毎回入力すれば、ユーザーフォームを使わなくても枚数指定の印刷はできます。

印刷方法は、エクセルVBAで自動印刷ページをご覧くださいませ。

今回はユーザーフォームを作って、オリジナルの操作画面を作るっていう方が分かりやすいかもしれませんね。

ユーザーフォームで印刷

正直細かい専門用語は分かりませんが、こんな感じでエクセルの中に操作パネルを作っちゃうことですね。

ボウリング成績表を印刷

ボウリング成績表印刷用ユーザーフォーム

当然この位置にずっと表示されていると邪魔なので、表示したり非表示にしたりできます。

成績表用のユーザーフォームなので、いくつかボタンがありますが、四角い枠の中に印刷したい枚数を数字で入力して、印刷実行ボタンを押せば指定した枚数分印刷できます。

その下の登録順ボタンは、通常は必要ないのですが、リーグのルールや表彰対象などが変更になった時等の為に用意しただけなのであまり使わないかな。

MENUボタンはその名の通り、このエクセルのトップページに戻るみたいなボタンです。

CLOSEは邪魔であれば非表示にする為だけです。

最終シフトの枠の2つのボタンは、リーグの最終成績の時にいつもと違う内容を表示するために用意しています。

枚数指定して印刷

ここでは、ユーザーフォームでの操作になります。全部書くと長くなるので、1枚から3枚までの場合をエクセルVBAで記述すると、このようになります。

ボウリングリーグ成績表風に書くと、成績表シートを表示した状態で、四角い枠(TextBox1)の数字が1の時は1ページ目と2ページ目を1枚印刷。2の時は同じく2枚、3の時は同じく3枚という感じです。

ちなみに1ページ目は個人成績表で2ページ目はチーム成績表です。

プリンターの設定で両面印刷になっているので表面は個人、裏面がチームという具合です。実際にはダブルス戦で最大18チーム分あるので36枚印刷できるように続けて記述しています。

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

スポンサーリンク