hatena
hatena
2023/10/04 (水) 22:13:31
この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
通報 ...