2.罫線について(1)
【ビジネス帳票1mm方眼紙のVBA】
[戻る]
■概要説明
- 表を作って印刷するのに、ワープロでも表計算ソフトでも簡単に出来ますが、データが変わる毎に罫線を引き直さなくて済むのはAccessの良いところでしょう。又、1mm方眼紙など作るときはAccessが1番ですね。
- Accessの長さの単位はtwipが基本です。 1.2cmと指定しても1.199cmと表示されるのは、twipをcmに直しているために誤差がでるからです。1cmは567twipです。
- 試しにレポートに左位置1cmの直線を引き、名前を「直線」とします。テキストボックスを作り、名前を「値」とします。詳細のフォーマット時欄にVBAを書きます。 値 = 直線.left
プレビューするとテキストボックスに567と表示されます。
■レポートの左位置1cm、上位置1cmの位置から
10cm角の1mm方眼紙を作ってみよう。
LINEメソッドを使います。
方眼紙の1番上の直線は、twipで表現するとLine(567,567)-(6237,567)で表されます。これは、X座標がレポートの左位置1cmから11cmの位置に、Y座標はレポートの上位置から1cmの位置に直線を引くと言う意味です。
この直線を、1mm(56.7twip)ずつ99回下に引けば、横線が出来上がります。
方眼紙の左端の縦線は、Line(567,567)-(567,6237)で表されます。この直線を、1mm(56.7twip)ずつ99回右に引けば、縦線が出来上がります。
では、VBAを作りましょう。
Dim Rpt As Report, DrawColor As Long
Dim hTop As Single, hLeft As Single
Dim hWidth As Single, hHeight As Single
Dim I As Integer
Set Rpt = Reports!方眼紙 'レポート名の宣言
Rpt.ScaleMode = 1 '規定値(Twip単位)
hTop = 567 '上位置開始位置
hLeft = 567 '左位置開始位置
hWidth = 567+5670 '左位置 + 10cm
hHeight = 567+5670 '上位置 + 10cm
For I = 0 To 100
Rpt.Line (hLeft, hTop + I * 56.7)-(hWidth, hTop + I * 56.7)
Next
For I = 0 To 100
Rpt.Line (hLeft + I * 56.7, hTop)-(hLeft + I * 56.7, hHeight)
Next
以上で10cm角の1mm方眼が出来上がります。
■グラフ等で或る月は24日、或る月は22日の営業日に合わせ
縦枠を作りたい時、上の例題を使ってVBAを作ってみましょう。
上記の縦線を描画するモジュールである
For I = 0 To 100
Rpt.Line (hLeft + I * 56.7, hTop)-(hLeft + I * 56.7, hHeight)
Next
を加工します。
For I = 0 To 22
Rpt.Line (hLeft + I * (hWidth - hLeft) / 22, hTop)-(hLeft + I * (hWidth - hLeft) / 22, hHeight)
Next
これで22の縦枠が作られます。
24の縦枠を作るときは、22を24に変えます。
一般的にするために日数を変数に置き換えると、
営業日数=forms!フォーム名.営業日数
(フォーム名というフォームの営業日数と言うテキストボックスの値)
For I = 0 To 営業日数
Rpt.Line (hLeft + I * (hWidth - hLeft) / 営業日数, hTop)-(hLeft + I * (hWidth - hLeft) / 営業日数, hHeight)
Next
等と置き換えられます。
応用問題
1.の例題をtwipでなくcmで指定するVBAに変えてみょう。
Rpt.ScaleMode = 7(cm単位)とスケールモードを変える方法もありますが、方眼紙等間隔を0.1cmと指定すると実際には、0.101cm 間隔となりずれてきます。
Const TW = 567と指定しTWを使い応用問題を試してみよう。
[戻る]