Microsoft Access 掲示板

レポートでのフィールド配置の微調整について

6 コメント
views
4 フォロー

フィールドの上下ど真ん中に文字を配置するのは目分量で余白を調整するしかありませんか?

配置についてですが、上下で内容が違う、二段の表にする場合、画像のように
画像

商品名
商品コード
とラベルを配置したフィールドの中央位置に担当者というラベルを配置するのはどうやったらできますか?
担当者フィールドの中央と個数 単価の境界の中央が一致するようにしたいということです
(画像はEXCELでC1に個数 C2に単価をおいて D1とD2を連結した中央寄せしてつくりました)

YAT
作成: 2020/09/05 (土) 17:06:32
通報 ...
1

基本的には目分量ですることになります。
もし、コントロール数が多くて大変という場合は、VBAで位置調整する方法もありますが、Accessの場合は1レコード分の位置調整だけなのでそれほど手間ではないと思いますが。

もし、ご希望ならVBAで位置調整するコードを提示できますけど。

2

コードをよろしくおねがいします

3

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

Public Sub CtlVCenter(ReportName As String, ControlName As String)
    DoCmd.OpenReport ReportName, acViewDesign
    
    Dim R As Access.Report
    Set R = Reports(ReportName)
    
    Dim C As Access.Control
    Set C = R.Controls(ControlName)
    
    C.Top = (R.Section(C.Section).Height / 2) - (C.Height / 2)
End Sub

イミディエイトウィンドウで下記のように記述してEnterキーを押します。

Call CtlVCenter("レポート名", "コントロール名")

これで、レポートがデザインビューで開いて、指定したコントロールがセクションの上下中央位置に移動します。
デザインビューを確認して問題なければ保存して閉じれば完了です。

4

ありがとうございました

レポートの真ん中に移動されましたが
先述しました、あるフィールドを中央として配置することは不可能ですか?

フィールド1
      フィールド3
フィールド2

ということです

5

フィールドを挟むように線を二本引いて
上下の間隔を均等にする、をすると対処できるようですね

6

下記の関数を作成して、

Public Sub CtlVCenter2(ReportName As String, ControlName As String, ControlName1 As String, ControlName2 As String)
    DoCmd.OpenReport ReportName, acViewDesign
    
    Dim R As Access.Report
    Set R = Reports(ReportName)
    
    Dim C As Access.Control
    Set C = R.Controls(ControlName)
    Dim C1 As Access.Control
    Set C1 = R.Controls(ControlName1)
    Dim C2 As Access.Control
    Set C2 = R.Controls(ControlName2)
    
    C.Top = (C1.Top + C2.Top) / 2
End Sub

イミディエイトで下記を実行。

Call CtlVCenter2("レポート名", "フィールド3", "フィールド1", "フィールド2")

以上でどうでしょうか。