戯れ言葉

MS Access:レポートで文字数に応じてフォントの大きさを変える

カテゴリ:MSAccess 備忘録
タグ:

 以前書いた記事の修正版

 決められた横幅のレポートのテキストボックスで、エクセルの書式設定の様に縮小して全体を表示するという設定と似たような処理をしたいときには・・・・・

 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:レポートで文字数に応じてフォントの大きさを変える 別法

Comments 0

There are no comments yet.

Leave a reply
コメントをどうぞ

 お名前とか
 ブログやホームページのURLをどうぞ

パスワードを入力すると投稿後、訂正・削除が出来ます