MS Access:レポートで文字数に応じてフォントの大きさを変える
以前書いた記事の修正版
決められた横幅のレポートのテキストボックスで、エクセルの書式設定の様に縮小して全体を表示するという設定と似たような処理をしたいときには・・・・・
NET上で検索すれば最適な手法はヒットしますが・・・・
こんな方法もあるという例を。
等幅フォントの場合、
まず表示する文字数を数えますが、アクセスは文字数で全角半角の区別をしないので
半角を1、全角を2とした時のバイト数を求める関数を作ります。
テキストボックスの名前をEquNmTxtとすると
レポートの詳細域のフォーマット時イベントで、文字数の応じてFontSizeを変更します。
フォントサイズは実際に入っているか目視確認して決めていきます。
プロポーショナルフォントでは文字の横幅は文字ごとに異なるので注意が必要。
で、フォントによっては普通にそのままの文字数で切り分けする方がいいかも。
MS ACCESS のFONTのサイズ(ポイント)は小数点以下の数値が指定出来ないので、どうしてもテキストボックス一杯に表示させることはできません。
ちなみに日本の公式文書の文字の基本ポイント数は10.5ポイントだそうで・・・・。
Accsess では対応できないので、エクセルへ書き出しが必要です???。
2016 05 18
参照
MS Access:レポートで文字数に応じてフォントの大きさを変える 別法
決められた横幅のレポートのテキストボックスで、エクセルの書式設定の様に縮小して全体を表示するという設定と似たような処理をしたいときには・・・・・
NET上で検索すれば最適な手法はヒットしますが・・・・
こんな方法もあるという例を。
等幅フォントの場合、
まず表示する文字数を数えますが、アクセスは文字数で全角半角の区別をしないので
半角を1、全角を2とした時のバイト数を求める関数を作ります。
Public Function LenBA(ByVal strX As String) As Long
'ANSI 文字列でのバイト長を求める
Dim strBA As String
strBA = StrConv(strX, vbFromUnicode)
LenBA = LenB(strBA)
End Function
テキストボックスの名前をEquNmTxtとすると
レポートの詳細域のフォーマット時イベントで、文字数の応じてFontSizeを変更します。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
If Len(Nz(Me!EquNmTxt)) = 0 Then
Me!EquNmTxt.FontSize = 10
Me!EquNmTxt.TopMargin = 10
ElseIf LenBA(Me!EquNmTxt) <= 14 Then
'14バイト以下の時は Fontsize を10twip
Me!EquNmTxt.FontSize = 10
'TopMargin を10twip
Me!EquNmTxt.TopMargin = 10
ElseIf LenBA(Me!EquNmTxt) <= 18 Then
Me!EquNmTxt.FontSize = 9
Me!EquNmTxt.TopMargin = 15
Else
Me!EquNmTxt.FontSize = 8
Me!EquNmTxt.TopMargin = 20
'TopMargin (テキスト内の上余白)を指定するときは
'すべての条件分岐ごとに指定する。単位はtwip
End If
End Sub
フォントサイズは実際に入っているか目視確認して決めていきます。
プロポーショナルフォントでは文字の横幅は文字ごとに異なるので注意が必要。
で、フォントによっては普通にそのままの文字数で切り分けする方がいいかも。
MS ACCESS のFONTのサイズ(ポイント)は小数点以下の数値が指定出来ないので、どうしてもテキストボックス一杯に表示させることはできません。
ちなみに日本の公式文書の文字の基本ポイント数は10.5ポイントだそうで・・・・。
Accsess では対応できないので、エクセルへ書き出しが必要です???。
2016 05 18
参照
MS Access:レポートで文字数に応じてフォントの大きさを変える 別法