Top > OOobbs3 > 107

OOobbs3/107 Edit

  • サマリ: ユーザー定義関数でセルの文字色を取得する
  • 環境: Calc
  • 状態: 解決
  • 投稿者: yutaka?
  • 投稿日: 2013-03-24 (日) 13:13:57

質問 Edit

とりあえず、下記の様に作ったのですが、もっと簡単にできないでしょうか?

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

回答 Edit

  • アクティブなシート専用なんでしょうか?そうでなければシートのインデックスも渡す必要があります。 Basic で書くシート関数は引数としてセルの参照を取得できませんので、これ以上は簡単になりません。
  • はにゃ? 2013-03-24 (日) 13:43:02
  • わかりました。回答ありがとうございました。 -- yutaka 2013-03-24 (日) 18:42:30
  • セルオブジェクトを引数にできないかと思ったのですが、できないということで了解しました。 -- yutaka 2013-03-24 (日) 18:45:19
  • 呼ばれる回数が多い関数であれば、API を使った形式で書くことをお勧めします。Basic よりも格段に速く実行できます。 -- はにゃ? 2013-03-24 (日) 22:23:50

感想,コメント,メモ Edit

  • 今回はあまり、スピードは必要ないので。しかし、APIにするとスピードがアップするなら、作って比べてみたいです。 -- yutaka 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


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