- ベストアンサー
Excelで最小フォントサイズを取得する方法
- Excelで表を作成している際に、印刷倍率に気をつけながら最小フォントサイズを取得する方法をVBAを使用して実現できます。
- 表の範囲を選択し、実際使用されているフォントサイズと印刷倍率を考慮して最小フォントサイズを計算します。上付き文字は無視されます。
- Excelのバージョンによらず、この方法を利用して表の最小フォントサイズを正確に取得することができます。
- みんなの回答 (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
お礼
ありがとうございます! 望みどおりのものができました。 >なぜフォントサイズを気にする必要があるか 実は、このような表を作成して顧客へ配布するのですが、 顧客の会社ごとによって使用できる最小フォントサイズが決まっており、しかも表が膨大になった場合、どうしても縮小をかけて表を作成して、それをいちいち計算してCKして・・・と大変だったもので、 どうにかVBAでクリアできないものかと日々悩んでおりました。 本当にありがとうございました!