MS Access Tips/Sample and VBA and Blog customize etc...

レポートで文字列を丸や楕円で囲む

レポート上で、特定の文字列や部分を丸や楕円で囲みたいときがあると思います。

DrawCircle.gif

今回はこれを簡単に実現する関数を紹介します。

難易度:

円や楕円は Circleメソッドで描画できます。下記のような構文になります。

expression.Circle (x, y), radius, color, start, end, aspect
expression レポートオブジェクトを表す式
(x, y) 中心のx座標、y座標
radius 半径
color 外周の色
start 扇型を描画するときの円弧の開始点
end 扇型を描画するときの円弧の終点
aspect 楕円の縦横比

例えば、詳細セクションの印字範囲の左から5cm、上から4cmの位置を中心に半径2cmの円を赤線で描画する場合は、

となります。これで好きな位置に円や楕円を描画できます。ただ、最初のサンプルのように特定の文字列(ラベル)を囲みたいとき、位置指定やサイズ指定が面倒です。そこで、コントロール(ラベル)を基準にして、それを囲むように描画する関数を作成します。

標準モジュールに、下記の関数を作成します。

詳細セクションにある ラベル1, ラベル2 を楕円で囲みたい場合は、詳細セクションの印刷時イベントに下記のように記述します。

拡大率を指定しないと(規定値=1)、枠に内接する楕円が描画されますのでこのままだと小さいと思いますので、うまく囲めるようにお好みで拡大率を調節してください。1.2~1.5ぐらいでいいと思います。

この関数を使えば、拡大率のみ設定すれば、あとはラベルを移動させても、サイズを変更してもコードを変更する必要はありません。

サンプルMDB が下記からダウンロードできます。サンプルでは、ラベル名を工夫することにより、フィールドの値によって対応するラベルが囲まれるようにしていますので、参考にしてください。
RptDrawCircle.zip (Access 2002-2003 形式 - 21kb)
RptDrawCircle2k.zip (Access 2000 形式 - 20kb)

拍手する

2 Comments

Mitzu says..."丸をしたくない場合"

大変有り難く拝見させていただき、これから活用させていただこうと思っております。
とはいいながら、大してVBの勉強をしたことがないので、こちらで質問させていただく前に勉強して出直して来いと言われるかと思いながらも投稿させていただきました。

該当項目の値がブランクが入っていたり、数値が0の時は丸しないようにするにはどうしたら良いのでしょうか。
空文字を許可しなかったり、0以外の数値を必ず入力させたいとは思うのですが、実際のところプリントアウトするタイミングによって許容せざるを得ないのが実情でして苦慮しております。

よろしければご教授よろしくお願いいたします。

2010.09.09 09:57 | URL | #- [edit]
hatena says..."re:bazziniさん"

わざわざ、お礼にお越しいただきありがとうございます。

それと、元記事へのリンクが切れていること、コードの間違いのご指摘もありがとうございます。ご指摘の点、さっそく、修正しておきました。

2010.12.07 03:36 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/66-c79b948c
該当の記事は見つかりませんでした。