お世話になります。
Hatenaさんの製作されたAutoFontSize関数でフォントサイズを縮小した後、テキストボックスの中央に文字が配置されるようにテキストボックスの右余白を設定するコードを記述しています参考。ちなみにこちらのコードもHatenaさんに回答していただいたものです。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim txtW As Long 'テキスト幅
Dim txtboxW As Long 'テキストボックス幅
Dim checkCharacter As String
checkCharacter = "一" 'テキスト幅調査用の例字
'中略
With 住所1
Me.FontName = .FontName
Me.FontSize = .FontSize
txtboxW = .Width
txtW = Me.TextWidth(checkCharacter)
.RightMargin = (txtboxW - txtW) / 2
End With
'後略
End Sub
このWithの中身が全く同じで、設定するテキストボックス名だけが住所2、社名1など違うものが10個ほどあり、このコードの中身をSub setRightMarginにまとめて随時呼び出しを行いたいのですが、上手くいきません。教えていただけないでしょうか?そもそも、Sub にまとめるという考えが間違っておりますでしょうか?
Subにまとめるという発想はこちらから得ました。(なんとこれもHatenaさんが回答されていたのですね。)
AutoFontSize関数自体にテキストの中央配置の機能があるのでそれを使えばどうでしょう。
AutoFontSize関数を垂直文字配置の指定ができるよう改良 - hatena chips
使用例
第3引数に Centerを指定すると中央配置になります。
縦書きのテキストボックスでも大丈夫です。
関数自体の機能で実現できたのですね、縦書きテキストボックスだったので使えないかと思い、記述から削除しておりました。
後学の為に、質問文通りの内容を実現するとすれば、どのような記述になりますでしょうか??
Subにまとめる方法で記述を試してみたのですが、色々とエラーが出てしまいます。
下記のような感じです。
第2引数は初期フォントサイズです。このフォントサイズで収まらないときに収まるようにフォントサイズを縮小します。
第3引数は下記のように指定します。
ありがとうございます、そちらはできました!
仮にWith文の中身をSubで記述する場合、どのように書けばよいか知りたいです。
こちらお答え頂きたいです、自身のコードではどう変えても構文エラーがでてしまいます!
引数で渡せばいいでしょう。
使い方として、例えば、
住所1、住所2・・・住所10
社名1、社名2・・・社名10
というテキストボックスがあったとして、
下記のような感じです。