文字列の抽出と計算 3.VBA:自分だけの関数を作る ①
今回のテーマ
前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
ユーザー定義関数
今までのマクロは、行や列のレイアウトが変わると役に立たなくなる場合がありました。そこで対策として、ワークシートで使用できる関数を自作し、行や列の増減に自動で追従する方法を紹介します。
Function Calc2(r As Range) As Long Calc2 = Mid(r.Value, 5, 3) End Function
今までは、
Sub 名前()
処理
End Sub
でした。
今回は、
Fnuction 名前(引数) as 名前の型
名前=処理(引数)
End Function
になっていることに注意してください。
今回、Calc2 という関数を作成するにあたり、( ) の中に「変数 r 」というRange オブジェクトを指定しています。繰り返しになりますが、Range オブジェクトは、一つ以上のセルそのものを扱う際に使用します。
このように、関数に与える変数を「引数(ひきすう)」と言います。引数は複数セットすることが出来るため、複雑な処理を行うことも可能になります。
また逆に、引数を指定せずに作成した場合は、引数によらず同じ値になります。
例)
- =Today()
- =Now()
- =PI()
それでは、作成した関数をワークシートに入力しましょう。
引数としてセル(この場合はA2)を指定しているため、行や列の増減に追従して「A2」が自動で変化するようになりました。
おわりに
今回の方法に対する評価(私見)は、以下の通りです。
メリット :
- 行や列の増減に、自動対応するようになった。
デメリット:
- 他のブックにコピーした場合、コピー先に同じユーザー定義関数がなければエラーになる。
今まで作成したものと組み合わせることで、さらなる高機能化が可能です。
(おわり)