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

執筆者:

関連記事

Shopify(Matrixify)でスケジュール化したJobのキャンセル

どうしても方法を見つけられなかったが、ふと画面に目を落とすと、あった、方法が。 焦ると視野が狭くなって、なかなか気が付かないんだよなあ、こういうの。 You have 4 scheduled jobs …

no image

DoCmd.GoToRecordよりもMe.SaveよりもMe.Refresh

Accessで、一旦フォーム上のレコードを保存したいとき、 Me.Save とやってもレコードが保存されない。 そこで、今までは、DoCmd.GoToRecordで無理矢理レコードを移動して保存してい …

no image

Accessでフォームフィルタの結果をExcelにエクスポートする

ちょっと、苦労した。 Private Sub cmdDMデータ作成_Click() On Error GoTo Err_cmdDMデータ作成_Click Dim rstf As String Dim …

no image

初めてのSQL Server 2008 R2 Express Editionでつまづいたことの記録

やりたかったことは、 1.Accessのとあるテーブルを、SQL Server 2008にインポートして、複製を作る。 2.上記で作ったテーブルを、AccessからODBCで読め、かつパススルークエリ …

no image

Accessの再クエリーでデータが移動してしまうのを解消

仕事メモ。 メイン・明細フォームのときは、 http://www.sanryu.net/acc/tips/tips323.htm を参考に、 Dim m_offset As Long ‘レ …