ハガキに宛名を印刷する場合、住所などの位置をテキストボックスに記入す出来れば自由なレイアウトが出来ます。エクセルのテキストボックスには文字に合わせてボックスの大きさを変えることが出来ますが、逆にボックスに合わせて文字サイズが自動的に変えることが出来ません。これが出来るマクロを作るための基本的な計算式です。
(1)テキストボックスの幅を求める
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
With Selection
幅 = vbTab & .Width
End With
(2)住所の文字数を求める
半角文字は全角の1/2として計算
文字数住所 = LenB(StrConv(住所, vbFromUnicode)) / 2
(3)フォントサイズは2文字分の余白を含んで計算する
フォントサイズ = Int(幅/ (文字数住所 + 2))
(1)テキストボックスの幅を求める
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
With Selection
幅 = vbTab & .Width
End With
(2)住所の文字数を求める
半角文字は全角の1/2として計算
文字数住所 = LenB(StrConv(住所, vbFromUnicode)) / 2
(3)フォントサイズは2文字分の余白を含んで計算する
フォントサイズ = Int(幅/ (文字数住所 + 2))