フォントの種類が混在しているセルは探すのが大変
1つのセルの中には複数のフォントの書式を使うことが可能です。1文字目だけを大きくしたり、英字だけは英字用フォントを使ったり、文字ごとに色を変えたり、など、いろいろな表現が可能です。
ただ、モニタだけで見る場合と印刷した紙を見る場合ではフォントはかなり違って見えます。特に問題なのがフォントの種類で、モニタと紙ではかなり違いがあります。
紙に印刷するとはっきりわかるのですが、モニタで見ている間はフォントの種類が混在していても慣れていないとなかなか気が付きません。そして気づかないまま印刷して「あー・・」となり紙を廃棄、という資源の無駄は出来れば避けたいです。
ただ、文章が多いとどのセルでフォントの種類が混在しているのかをチェックするのはかなり大変です。
そこで以下のコードを使ってフォントの種類が混在しているかどうかを確認します。
フォントの種類が混在しているセルを判別するコード
フォントの種類はFontオブジェクトのNameプロパティを使って取得できます。
ただ、セル内に複数のフォントの種類を使っている場合はNameプロパティは一つのフォントの種類に限定することが出来ないため「Null」を返します。
それを利用することでフォントの種類が混在しているセルを特定することが可能です。
以下のコードは選択セルの中でフォントの種類が混在しているセルがあれば、そのセルの座標をイミディエイトウィンドウに出力します。
1 2 3 4 5 6 7 8 9 10 11 |
Sub CheckCellFont() Dim r As Range '// 1つのセルのRangeオブジェクト '// 選択セルをループ For Each r In Selection '// フォントの種類が混在している場合 If (IsNull(r.Font.Name) = True) Then Debug.Print r.Address(False, False) End If Next End Sub |
使い方
以下の画像はC列に文字列を入力していますが、それぞれのセルは書式が異なり、C3セルとC5セルはフォントの種類が混在しています。
そこで、文字列が入力されている部分を選択して上の関数を実行します。
実行するとイミディエイトウィンドウにフォントの種類が混在しているセルの座標として「C3」と「C5」が出力されます。