Microsoft Access 掲示板

中身が同じWith文が複数あるので、1つにまとめたい / 6

6 コメント
views
4 フォロー
6

このWithの中身が全く同じで、設定するテキストボックス名だけが住所2、社名1など違うものが10個ほどあり、このコードの中身をSub setRightMarginにまとめて随時呼び出しを行いたいのですが、上手くいきません。教えていただけないでしょうか?

引数で渡せばいいでしょう。

Sub setRightMargin(ctl As Control)
    Const checkCharacter = "一" 'テキスト幅調査用の例字
    Dim txtW As Long 'テキスト幅
    Dim txtboxW As Long 'テキストボックス幅
    With ctl
        Me.FontName = .FontName
        Me.FontSize = .FontSize
        txtboxW = .Width
        txtW = Me.TextWidth(checkCharacter)
        .RightMargin = (txtboxW - txtW) / 2
    End With
End Sub

使い方として、例えば、
住所1、住所2・・・住所10
社名1、社名2・・・社名10
というテキストボックスがあったとして、
下記のような感じです。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

'中略

    Dim i As Long
    For i = 1 to 10
        Call setRightMargin(Me.Controls("住所" & i))
        Call setRightMargin(Me.Controls("会社" & i))
    Next

'後略

End Sub
通報 ...