エクセル実践塾 > エクセル実践塾2013

オリジナルの関数(ユーザー定義関数)を作りたい

 

Functionプロシージャとして、Visual Basicで作成できます

ユーザー定義関数は、一般的なマクロと同じモジュールで作成できます。

Functionステートメントで、任意の名称の関数を宣言し、自動的に追加される「End Function」行の間にその処理を記述します。

作成したユーザー定義関数は、一般の関数と同じようにワークシートで使用できます。

Excel 2013/2010

 

@モジュールウィンドウで、「function」+関数名+引数を入力します

作例では、指定セルの塗りつぶし色を数値で表す関数「CellColor」を作ります。対象となるのは特定のセルなので、引数を「セル」としています。

 

AFunctionステートメントを改行すると、自動的に「End Function」ステートメントが追加されます

関数で行う処理は、この間に記述します。

B通常の関数と同じく、ユーザー定義関数が自動再計算されるように、「Application.Volatile」メソッドを入力します

自動再計算関数にすれば、ワークシートのいずれかのセルで計算が行われるたびに再計算が行われるようになります。

C関数として行う処理を記述します

作例では、指定したセルの塗りつぶし色を数値で得たいので、対象セルの「Interior.Color」プロパティを調べています。

それを関数名で表される変数に代入すれば、関数としてその値を得られるようになります。

Dユーザー定義関数は、通常の関数と同じように使うことができます

Eもちろん、関数式のコピーも可能です

 

関連する他のページ

郵便番号や会員番号、日付の表示形式を整えたい
ユーザー定義すれば、ハイフン付きの表示や、表示桁位置の固定などを、データの修正なしに行えます

「1/1」をそのまま入力したい
あらかじめ表示形式を「文字列」にしておくと、「1/1」が日付にならずそのまま入力されるようになります

金額を千円単位で表示したい
表示形式で設定できます

「0」を付加しないで、小数点の位置を揃えたい
ユーザー定義の表示形式で、桁プレースホルダの「?」を使えば、「0」が付加されないで、小数点の位置がそろうようになります

翌日の時刻を「28:02」などと表記したい
表示形式を「[h]:mm」とユーザー定義します

日付を和暦で表示したい
「カレンダーの種類」を「和暦」にします

10桁の商品番号をハイフン付きで表示したい
「セルの書式設定」→「表示形式」タブで、「000-000-0000」のようなユーザー定義を設定すれば、10桁の数値をハイフン付きで表示させることができます

月ごとにシートを用意してるから、日にちと曜日だけをセルに表示したい
セルの表示形式をユーザー定義すれば、日にちと曜日だけの表示にできます

日付を曜日付きで表示したい
表示形式を変えれば、その日付の曜日も表示できます

セル値に文字列を追加したい
表示形式を使えば、複数のセル値にまとめて文字列を追加できます

特集「条件付き書式」

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

指定色で塗りつぶされているセルの個数を求められる、ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます