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

AccessのDoCmd.OpenForm acPreviewでデータが表示されない

なぜか、フォームに新規データを入力し、印刷プレビュー(DoCmd.OpenForm “見積請求書F”, acPreview)した際に、それまで入力したデータが消えたようになる。 …

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

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

no image

Accessで「イベントプロパティに指定した式MouseMoveでエラーが発生しました。フォームまたはレポート上のActiveX コントロールを読み込むときにエラーが発生しました。」

フォームに配置したプログレスバーコントロールの上をマウスポインタが横切ろうとすると、必ず上のエラーメッセージが表示される。 原因がわからず、対処もできず、困っていた。 Google先生も頼りにならず、 …

no image

Accessクエリでのフィールド名は同じので重複できる

Accessではクエリの中で同じフィールド名を使えない! ・・・とずっと思っていた。 なので、テーブルで使っているフィールド名でクエリの結果を出す必要があった際には、クエリを二つ作ってそれぞれ前処理 …

no image

AccessからMySQLを操作

WordPressに書いた記事は、MySQLに格納されている。 格納された大量の記事をまとめて修正したいときは、いちいち管理画面から修正するのは疲れる。 今までは、PhpMyAdminでSQLのUPD …