6月5日の日記

2013年6月5日
本題はひみつの方

エクセルでユーザー定義関数を作ってて、Excel VBAにはオーバーロードが無いことを今日初めて知って驚いた

もともとエクセルの関数でsum(a1:a5)とsum(1,2,3)を何も考えずに使ってたから、ユーザー定義関数でも簡単に作れるもんだと思ってたら微妙にめんどくさかったから備忘録

調べてみたらいくつかやり方が有るけど、今回はこの形で実装
関数の引数をparamarrayで指定し、任意の数の引数を受け取れるように
最初の引数のタイプを調べて、Range型ならRangeで指定された範囲にFor Each
違うなら引数の配列に対してFor Eachを適用

sum(1,2,3)がデフォルト仕様で、1がa1:a5の形だったらsum(a1:a5)の動きをする感じ

適当に書くとこんな
function test(ParamArray X()) as double
if typename(X(0)) = "Range" then
For Each Y in X(0)

next Y
else
For Each Y in X

next Y
end if
end function

書いてて非常に気持ちが悪い

コメント

お気に入り日記の更新

この日記について

日記内を検索