Top > OOobbs3 > 107
** [[OOobbs3/107]] [#accca333]
-''サマリ'': ユーザー定義関数でセルの文字色を取得する
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[yutaka]]
-''投稿日'': 2013-03-24 (日) 13:13:57
*** 質問 [#a52e5b9e]
とりあえず、下記の様に作ったのですが、もっと簡単にできないでしょうか?

 function test1(ir as long, ic as long) as long
   test1=ThisComponent.CurrentController.Activesheet.getCellByPosition(ic-1,ir-1).CharColor
   'test1=ThisComponent.CurrentController.Activesheet.getCellByPosition(ic-1,ir-1).CellBackColor
 end function
*** 回答 [#rb4596d6]
- アクティブなシート専用なんでしょうか?そうでなければシートのインデックスも渡す必要があります。
Basic で書くシート関数は引数としてセルの参照を取得できませんので、これ以上は簡単になりません。

-- はにゃ? &new{2013-03-24 (日) 13:43:02};
- わかりました。回答ありがとうございました。 -- yutaka &new{2013-03-24 (日) 18:42:30};
- セルオブジェクトを引数にできないかと思ったのですが、できないということで了解しました。 -- yutaka &new{2013-03-24 (日) 18:45:19};
- 呼ばれる回数が多い関数であれば、API を使った形式で書くことをお勧めします。Basic よりも格段に速く実行できます。 -- はにゃ? &new{2013-03-24 (日) 22:23:50};

#comment


*** 感想,コメント,メモ [#v10351b6]
- 今回はあまり、スピードは必要ないので。しかし、APIにするとスピードがアップするなら、作って比べてみたいです。 -- yutaka &new{2013-03-27 (水) 00:37:26};

なお、
今回の質問のコードは、下記のように変えました。これだと引数が一つになるので。

シートの式
 =TEST19(CELL("address",A1))

マクロ
 function test19(s as string) as long
   test19=ThisComponent.CurrentController.Activesheet.getCellRangeByName(s).CharColor
 end function

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes