libreoffice calc basic ユーザー関数の文字列引き渡し。
ふと思い立って、セルに長々と関数を書かなくてもユーザー関数作れば良いじゃん!
って、何年目にして気づいてんだよ!って怒られそうですが(誰に?)、早速作成。
で、関数の動きを文字列を引数にすることで変化させようとして、エラく苦労してしまったので、
メモ。
関数を使用するとき、例えば hoge(henka, fig1, fig2)という関数があったとする。
このとき、
henkaには文字列として、ABC、XYZの2パターンが入力される。
fig1, fig2には、数字が入力。
で、戻り値として
ABCのときは、fig1とfig2を足したものに、消費税をかけた結果が戻ってくるとする。
XYZのときは、fig1+fig2を足した結果
その他は、999を返す
関数としては、
function hoge(henka$, fig1, fig2)
dim syohi_zei
syohi_zei = 1.1
if henka = "ABC" then
hoge = (fig1 + fig2)*2*syohi_zei
else if henka = "XYZ" then
hoge = fig1 + fig2
else
hoge = 999
end function
で、呼び出すときに
hoge("ABC", 100, 300)
として、文字列として渡すにはダブルクオーテーションで囲ってあげる必要あり。
(冷静に考えれば当たり前だけど、ここが盲点だった。。。)