目次
目的
- ExcelVBA のユーザー定義関数でセルの書式情報を取得したい。
- フォント名、文字サイズ、文字色を取得したい。
テストしてみました。
マクロの一例
下記ユーザー定義関数を作成してみました。「=thiscell_function()」の数式をワークシートのセルに入力して利用可能です。
ThisCell プロパティのヘルプを見てみると、ユーザー定義関数の中で Range オブジェクトのプロパティ、メソッドにアクセスしてはならないと記述されていました。
なので、今回の方法は間違っているかもしれませんが良ければご覧ください。
Function thiscell_function()
Dim a As String
With Application.ThisCell
a = .Address(False, False) & " , " & _
.Font.Name & " , " & _
.Font.ColorIndex & " , " & _
.Font.Size
End With
thiscell_function = a
End Function
「A1:A3」の範囲のフォント、文字色、文字サイズを手動で変更して、「A1:A3」の範囲に「=thiscell_function()」の数式を入力してみます。
数式を入力してみると、以下の結果になりました。フォント名などが取得されています。色々なフォントを設定していけば、フォントの見本を作成出来そうですね。
エラー
下記ユーザー定義関数も作成してみました。「A1」セルの値を「aaa」に変更しようとしてみるユーザー定義関数になっています。
Function thiscell_function_002()
Range("A1").Value = "aaa"
End Function
「=thiscell_function_002()」の数式を「B1」セルに入力してみると、以下の結果になりました。「#VALUE!」のエラー値になっています。
ユーザー定義関数の中では、別のセルの値は変更出来ないようです。
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。