得点記入用紙(VBA)
- 2008/08/15 22:42
- カテゴリー:大会支援(ドッチボール)
前回得点記入シートを作りました、今回はこれの印刷をVBAで行います。
記入シートを数分作成(コピー)して、関数で項目を呼び出してもいいのですが、得点記入シートが変わった時の修正ミスや、対戦数の随時変更に対応するために、VBAを使います。
まず、シート上にコマンドボタンを配置します。
表示するテキストは、対戦表印刷とでもしておきましょうか。
そして、そのコマンドボタンにマクロを書いていきます。
i = 3
With ActiveSheet
While (.Range("F" & i).Value <> "")
If Worksheets("Option").Range("B24").Value = "有" Then
.Range("C1").Value = "*%V%J" & i & ".*"
Else
.Range("C1").Value = ""
End If
.Range("A3:C3").Value = .Range("K" & i & ":M" & i).Value
.Range("B4:C4").Value = .Range("N" & i & ":O" & i).Value
.PrintOut ActivePrinter:=Worksheets("Option").Range("B4").Value
i = i + 1
Wend
.Range("C1").Value = ""
.Range("A3:C3").Value = ""
.Range("B4:C4").Value = ""
End With
と、こんなところですかね、見る人が見るとかなり手抜きです・・・・
基本的には、印刷項目を順番にコピーして、.PrintOut で印刷しているだけです。
後ろの ActivePrinter:=Worksheets("Option").Range("B4").Value は、後から説明するオプションで設定したプリンタを指定して印刷するところです。
前にも書きましたが、ここがEXCEL97の時は、ころころ変わるポート番号まで指定しなきゃいけなかったんで、楽になっています。
ループは空白セルまで行くと止まりますので、印刷数は印刷項目のセルの数でコントロール出来ますので、いちいちVBAを変更しなくて済みます。
さて、一部に
If Worksheets("Option").Range("B24").Value = "有" Then
.Range("C1").Value = "*%V%J" & i & ".*"
Else
.Range("C1").Value = ""
End If
と記述があります、これはオプションでバーコード有にした時に、得点記入用紙にバーコードを印刷するためのものです。
今回もこのバーコードを使用します。
得点記入用紙のC1セルを、バーコードフォントBC39にしておきます。
バーコードについて触れたので、次はバーコード入力のVBAです。