• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで最小フォントサイズを取得したい)

Excelで最小フォントサイズを取得する方法

このQ&Aのポイント
  • Excelで表を作成している際に、印刷倍率に気をつけながら最小フォントサイズを取得する方法をVBAを使用して実現できます。
  • 表の範囲を選択し、実際使用されているフォントサイズと印刷倍率を考慮して最小フォントサイズを計算します。上付き文字は無視されます。
  • Excelのバージョンによらず、この方法を利用して表の最小フォントサイズを正確に取得することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

なぜフォントサイズを気にする必要があるか分かりませんが、困っておられるようなので、質問のマクロを書いてみました。 調べたい範囲を選択して、下のマクロを実行して下さい。 最小フォントサイズ:11 印刷倍率:90% 倍率考慮:9 のようなメッセージボックスを表示します。 1つのセル内のフォントが複数ある場合は無視しています。 モジュールの   '// 複数のフォントサイズが設定されている場合   '//   ・・・何もしていない   '  :   '  : の部分です。 For~Nextの『'』を削除すると、それなりに動くはずですが、意味があるかどうかは分かりません。 まずは、下のまま動かしてみてください。標準モジュールに貼り付けます。 Sub getMinimumFontSize()   Dim rg As Range     '// セル   Dim minFS As Integer   '// フォントの最小サイズ   Dim L As Integer     '// 文字カウンタ      minFS = 409 '// これが最大値(Excel2000)   For Each rg In Selection     '// 入力のあるセルのみを対象とする     If rg.Text <> "" Then       If IsNull(rg.Font.Size) Then         '// 複数のフォントサイズが設定されている場合         '//   ・・・何もしていない         'For L = 1 To Len(rg.Text)         '  If rg.Characters(L, 1).Font.Size < minFS Then         '    minFS = rg.Characters(L, 1).Font.Size         '  End If         'Next       Else         '// セルには単一のフォントサイズ         If rg.Font.Size < minFS Then           minFS = rg.Font.Size         End If       End If     End If   Next      '// メッセージ出力(計算によっては、倍率考慮=0 も出る)   MsgBox "最小フォントサイズ:" & minFS & vbLf & _       "印刷倍率:" & ActiveSheet.PageSetup.Zoom & "%" & vbLf & _       "倍率考慮:" & Int(minFS * ActiveSheet.PageSetup.Zoom / 100) End Sub

ashtk
質問者

お礼

ありがとうございます! 望みどおりのものができました。 >なぜフォントサイズを気にする必要があるか 実は、このような表を作成して顧客へ配布するのですが、 顧客の会社ごとによって使用できる最小フォントサイズが決まっており、しかも表が膨大になった場合、どうしても縮小をかけて表を作成して、それをいちいち計算してCKして・・・と大変だったもので、 どうにかVBAでクリアできないものかと日々悩んでおりました。 本当にありがとうございました!

関連するQ&A