OOobbs/27
質問ユーザー定義関数の引数へ、数値や文字列を渡す方法はわかりましたが、セル(セルオブジェクト?)を渡す方法がわかりません。 例えば、 Function Vol(L1, L2, L3) Dim iVol as Long iVol=L1*L2*L3 Vol=iVol End Function の関数(helpより抜粋)をセルから =Vol(1;2;3) として、6が得られる事はわかりましたが、 =Vol(A1;A2;A3) のようにセルを渡して、関数内で iVol=L1.Value*L2.Value*L3.Value の様な感じで処理したいのです。 excelのvbaなら、 Function CellColor(セル) CellColor = セル.Interior.ColorIndex End Function こんな感じでセルの色番号が返ってくるのです。 #当面やりたいのはこちらの方です(^^; 当方、OOoはもとよりbasic自体初心者で、根本的な部分を見落としてる気がするのですが、どなたか教えてください。 よろしくお願いします。 回答suouです。はにゃさんによく教えてもらっています。さて、セルL12,M13,N14にそれぞれ2,3,4を入力し、次のようなプログラムを書いて実行させたところ、"24"とMsgboxに正しく表示しました。これをもとにいろいろ試されたらいかがでしょうか。 Sub test() dim oSheet as object dim oA, oB, oC as object oSheet = StarDesktop.CurrentComponent.CurrentController.ActiveSheet oA=oSheet.getCellByPosition(11,11) oB=oSheet.getCellByPosition(12,12) oC=oSheet.getCellByPosition(13,13) a=Vol(oA,oB,oC) msgbox a End Sub Function Vol(ByVal L1 as object, ByVal L2 as object, ByVal L3 as object) Dim iVol as Long iVol=L1.Value*L2.Value*L3.Value Vol=iVol End Function はにゃ先生、こんな回答で理解のきっかけをつくれるでしょうか? 呼び出し側の問題なのかなぁ?suouさん回答ありがとうございます。とりあえず、suouさんの方法を試すと 引き続き、情報募集中です。(^^; よろしくお願いします。
セルに入力するときのフォーマットを変更する必要がでてきますが, Function eeVol(L1 As String, L2 As String, L3 As String) As Long Dim oL1 As Object, oL2 As Object, oL3 As Object Dim oDoc As Object, oSheet As Object Dim iVol as Long oDoc = ThisComponent oSheet = oDoc.CurrentController.ActiveSheet oL1 = oSheet.getCellRangeByName(CStr(L1)) oL2 = oSheet.getCellRangeByName(L2) oL3 = oSheet.getCellRangeByName(L3) iVol = oL1.Value * oL2.Value * oL3.Value eeVol=iVol End Function としてみました。この関数を使うときには,次のような形式でセルに入力します。 =EEVOL("L12";"M12";"N12") ここで,L12 などは "" でくくることで,文字列として渡されます。 定義した関数の中で,指定したセル範囲をオブジェクトとして取得してから処理に用います。
については,Calc のヘルプに載っていますが,「OpenOffice.org 用アドインをプログラミングする」のページです。Basic では使えそうにありません。
|