なぜフォントサイズを気にする必要があるか分かりませんが、困っておられるようなので、質問のマクロを書いてみました。
調べたい範囲を選択して、下のマクロを実行して下さい。
最小フォントサイズ: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
お礼
ありがとうございます! 望みどおりのものができました。 >なぜフォントサイズを気にする必要があるか 実は、このような表を作成して顧客へ配布するのですが、 顧客の会社ごとによって使用できる最小フォントサイズが決まっており、しかも表が膨大になった場合、どうしても縮小をかけて表を作成して、それをいちいち計算してCKして・・・と大変だったもので、 どうにかVBAでクリアできないものかと日々悩んでおりました。 本当にありがとうございました!