目次

目的

  • 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」セルの文字色「-4105」は、文字色が「自動」になっている状態のようです。
セルの情報が取得出来ている。「A1」セルの文字色「-4105」は、文字色が「自動」になっている状態のようです。
「=thiscell_function()」の数式が入力されている。
「=thiscell_function()」の数式が入力されている。

目次まで戻る

エラー

下記ユーザー定義関数も作成してみました。「A1」セルの値を「aaa」に変更しようとしてみるユーザー定義関数になっています。

Function thiscell_function_002()
   Range("A1").Value = "aaa"
End Function

「=thiscell_function_002()」の数式を「B1」セルに入力してみると、以下の結果になりました。「#VALUE!」のエラー値になっています。

ユーザー定義関数の中では、別のセルの値は変更出来ないようです。

ユーザー定義関数を入力した結果、「#VALUE!」のエラー値が表示されている。
ユーザー定義関数を入力した結果、「#VALUE!」のエラー値が表示されている。

テスト環境

  • Windows 10(64 ビット)
  • Microsoft Office Excel 2003

以上、閲覧ありがとうございました。

目次まで戻る

前後の投稿