MS Access

Accessのフォーム/レポートのコントロール同士をくっつけて桝目状にしたい

投稿日:2009年1月7日 更新日:

レポートを、Excelのような桝目の罫線にしたい。

お客からこんなニーズが多い。
やったことがある人ならわかるけど、これが、なかなか苦労する。

レポートのデザインビューで、いざ個々にコントロールをきちんと配置しようとすると、間があいたり重なったり、ピッタリ隣接して並ばない。キレイにならない。

これに10年近く悩まされている自分がここに・・・。

今日は差し迫った仕事がなかったので、時間をかけてじっくり追求してみた。
以下、追及した原因と、その対策。

フォームのグリッドについて(確認)
新規にレポートを作ると、「台紙」に、1センチ角で、方眼用紙みたいなグリッドが表示される。
そして表示はされないけど、ひとつの箱の中に10本のグリッド線が引かれている(X軸グリッド数とY軸グリッド数がともに10)。ということは、1グリッド=1ミリということになる。

原因1:自動で作成されるコントロールの大きさが中途半端
例えばテキストボックスコントロールを配置すると、幅:3cm、高さ:0.476cmで作成される。(ペアのラベルは、幅:1.587cm、高さ:0.476cm)
何でこんなに幅が中途半端なのか? 入るフォントが11ポイントなので、ぴったり入る大きさをデフォルトとしているから?

原因2:テキストボックスとそれに付随するラベルがペア
片方をドラッグして移動しようとすると、グループのもう片方がついてくる。便利なこともあるのだが、例えば二組のグループを表のように隣り合わせて配置しようとしたときに、ぴったり合わないで困る。
それぞれのコントロールの上下左右を引っ張ったり伸ばしたりして、グリッドに吸着させるが、4辺×4つのコントロールだから、16回それをしないといけない。
20個のコントロールを整えるとすると、4辺×20個で80回しないといけない。
大変面倒。

今までの対策
で、私の場合、レポートに散らばった大量のコントロールを表のように揃える時は、

  1. だいたいの位置に並べる。
  2. 複数のコントロールを選択し、「コントロールの配置」-「左」で揃える
  3. グリッド線がデフォルトは黒で、コントロールの色と同じなため、本当に揃っているのがわかりにくいので、全コントロールをプロパティで、境界線スタイルを実線にし、境界線色を赤にする。
  4. 印刷プレビューで線がずれていないのが確認できたら、3で付けた線のプロパティを元に戻す

・・・とやってきた。

でもこのやり方だと、2でテキストボックスはぴったり揃うのだが、それにヒモつけられたラベルもまとめて同じようにやろうとすると、左のつらで揃わない。ラベルの幅は、そこに入力される文字数によって大きさが勝手に広がってまちまちだから。
なので、さらに作業として、ペアとなるテキストボックスの幅や高さを調べて、それと同じにした上で、2の方法でそろえたり、プロパティに直接数値をタイプしたり。
それを複数選択したコントロールに施していく。
このやり方でやっと完成したとしても、その後、一部のコントロールの幅を広げたり縮めたりする必要が出てきたら、またひと苦労。修正もれも出やすい。うんざり。

今回発見した対策

  1. だいたいの位置に並べる。
  2. 全コントロールを選択し、「サイズ」-「グリッド線にあわせる」で大きさをグリッド線の基準に揃える(レポートの「グリッド線にあわせる」コマンドではなく、コントロールのサイズの「グリッド線にあわせる」コマンドであるのが紛らわしい)
  3. テキストボックスをドラッグして配置する。
  4. 必要に応じて、複数のコントロールを選択し、「コントロールの配置」-「左」で揃える

いやー、作業効率が大幅向上。
うれしい。

-MS Access

執筆者:

関連記事

no image

Access2007 Runtime

MS-Access Discovery – [News] 速報:Access 2007 ランタイムはバグフィックスのため延期 http://x7net.com/~access/index. …

no image

AccessのデータをGoogleスプレッドシートに表示する

会社のネットショップで、お客様から電話で荷物の出荷状況について問い合わせがあった場合に、現状ではすぐに対応できていなかった。 荷物の伝票番号は、クロネコヤマトのB2のソフトか、あるいはAccessの業 …

Office365にはSharePointリストという表データが保存できる機能がありAccessのリンクテーブルにできる

Office365では、AccessのWebアプリを作れる。 それで今、勉強しているのだが、Office365にはSharePointリストという表データが保存でき、それをAccessのリンクテーブル …

no image

テキスト型の日付をformat関数で揃える

CSV形式のデータからAccessにインポートしたものだから、日付が2012/5/5やら2012/05/05やら、文字列扱い(日付型でない)の混在したデータの入ったテーブルがある。 これをきちんと並べ …

no image

Excelで使える祝日判定のWebAPIを見つけた

Excelの関数には、曜日を判定できる関数(WEEKDAY)が用意されている。また、表示だけなら書式設定でもできる。しかし祝日となると、関数も何も、用意されていない。 祝日は年により、突然増えたり、「 …