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

エクセルVBAで自動印刷

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

2017年6月14日

マクロを使って枚数・範囲を自動印刷

エクセルで印刷をすることは非常に多いですが、リーグ成績表やレコードシートの印刷をする時には通常毎回印刷範囲の設定や印刷枚数は決まっていますよね。それなのに印刷するたびに同じ作業を繰り返し行うのは作業効率が悪いですよね。決まっているならボタン一つで自動的に範囲・枚数が印刷されれば便利で、仕事が早く終わりますよね。

この一連の流れをエクセルVBAで記述すると・・・

Sub レコードシート印刷()
Worksheets(“レコードシート”).Activate
Select Case Sheets(“MENU”).Range(“AU41”).Value
Case Is = 1
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=1, Copies:=1, Collate _
:=True
Case Is = 2
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=2, Copies:=1, Collate _
:=True
Case Is = 3
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=3, Copies:=1, Collate _
:=True
Case Is = 4
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=4, Copies:=1, Collate _
:=True
Case Is = 5
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=5, Copies:=1, Collate _
:=True
Case Is = 6
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=6, Copies:=1, Collate _
:=True
Case Is = 7
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=7, Copies:=1, Collate _
:=True
Case Is = 8
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=8, Copies:=1, Collate _
:=True
Case Is = 9
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=9, Copies:=1, Collate _
:=True
End Select
End Sub

このようになります。ちなみにこれはレコードシートを印刷するマクロなんですが、レコードシートはボックスに1枚必要なので、18レーンの西船ボウルは最大9ボックスになり、リーグ設定シートのMENUのAU41には今回の参加人数から必要ボックス数を割り出して表示しています。18チームならば9ボックス、10チームならば5ボックスという設定です。

それでは、ボウリング風に書くと、レコードシートを書いてあるエクセルシートを選んで、MENUシートのセルAU41の値が1の時は1ボックス分(開始ページ1~終了ページ1で1枚印刷)印刷2の時は2ボックス分(開始ページ1~終了ページ2で1枚ずつ印刷)・・・9の時は9ボックス分(開始ページ1~終了ページ9で1枚ずつ印刷)という感じですね。

スポンサーリンク