こんにちは、Ryoです。
VBAで対象のセルや範囲に対しフォント設定することは出来ますが、例えば参照元のデータを読み込む際にセルのフォント名も取得しておくと、書き込む際に合わせてフォント指定も出来ますので手間が省けることがあります。
今回はNameプロパティを使って別のセルにフォントを設定する方法について書いてみたいと思います。
1.サンプルコード
先ずはサンプルコード、及び実行画面を見ていただければ簡単に出来ることがわかります。
Sub Sample1() Dim SampFont As String 'HG教科書体を取得し、別セルへ設定 SampFont = Cells(6, 2).Font.Name Range(Cells(3, 4), Cells(6, 4)).Font.Name = SampFont 'Range("D3:D6").Font.Name = SampFontの記述でも可 End Sub
これは下の実行前画像にある「HG教科書体」のフォント名を取得し、セルD3~D6へ設定するものです。
≪実行前≫
≪実行後≫
この通り取得した「HG教科書体」のフォントに変わってますね。
サンプルコードを見ていただいた通り、Nameプロパティを使って以下の様に指定します。
オブジェクト.Font.Name
これを使っているのは、SampFont = Cells(6, 2).Font.Nameで変数にフォント名を代入し、
Range(Cells(3, 4), Cells(6, 4)).Font.Name = SampFontの指定した範囲を変数に代入したフォント名を指定し設定するという形になっています。
サンプルでは範囲ですが、単一セルであればCells(n,n).Font.Name=SampFontNameの様に指定すればOKです。
◆参考例
例えばサンプルにあるフォント名を4つ取得し、反映する側の文字列によって設定を変えるとした場合は以下の様に記述して対処することも出来ます。
Sub Sample2() '配列にフォント名を格納 Dim SampFont(1 To 4) As String Dim i As Integer For i = 1 To 4 SampFont(i) = Cells(i + 2, 2).Font.Name '取得したフォント名によって設定する対象セルを変える Select Case SampFont(i) Case Is = "MS 明朝" Cells(6, 4).Font.Name = SampFont(i) Cells(6, 5) = SampFont(i)'表示用 Case Is = "MS ゴシック" Cells(5, 4).Font.Name = SampFont(i) Cells(5, 5) = SampFont(i)'表示用 Case Is = "メイリオ" Cells(4, 4).Font.Name = SampFont(i) Cells(4, 5) = SampFont(i)'表示用 Case Is = "HG教科書体" Cells(3, 4).Font.Name = SampFont(i) Cells(3, 5) = SampFont(i) '表示用 End Select Next i End Sub
フォント設定する側の下から順に「MS明朝」「MSゴシック」「メイリオ」「HG教科書体」に変えて隣に設定したフォント名を表示させています。
≪実行後≫
設定したフォント名さえ取得しておけば、後は処理上用途に応じて使い分ければ良いので、
オブジェクト.Font.Nameを覚えておけば大丈夫です。
2.まとめ
Excel側で指定範囲を予めフォント設定しておいた上で使う、という形でも何も問題は無いのですが、その都度様式を事前準備する必要が出たりしますから今回の.Font.Nameを覚えておくと手間を省くことが出来るかもしれませんのでお薦めです。
以上、セルのフォント名を取得し別のセルへ設定する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo