great_pumpkin's blog

日々のあれこれ。-主に仕事中のメモ-

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)

として、文字列として渡すにはダブルクオーテーションで囲ってあげる必要あり。

(冷静に考えれば当たり前だけど、ここが盲点だった。。。)