Calcでセルを選択しなくてもドロップダウンの三角マーク(▼)を表示させておく事は出来ますか?

Calcでセルを選択しなくてもドロップダウンの三角マーク(▼)を表示させておく事は出来ますか?

「データの入力規則」でリストを利用した時のドロップダウンリストのことでしょうか?
(表示させたままの方法は調べきれていませんが)

ありがとうございます そうですリストを作成したときのドロップダウンリストですがそのセルを選択しないと▼が出てきません どのセルにドロップダウンリストが入力されているかセルを選択しなくてもわかるように出来ると助かります

入力規則が設定されたセルかどうかをチェックするマクロ関数を作ってCELL関数と組み合わせれば

の回答と同様の方法で、入力規則のあるセルを自動的に任意のスタイルにすることはできそう。

1 Like

マクロ禁止で無ければ、セル情報を取得する ユーザー関数と条件付き書式 利用で入力規則のあるセルを特定することは可能です。

  • マクロは計算に時間がかかります、検索範囲を最小限に絞って利用した方が良いです。
Function ValiType(Addr As String) As Integer
  ValiType = 0
On Error GoTo ERR
  ValiType = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(Addr).Validation.Type
ERR:
End Function

条件付き書式の設定
数式が VALITYPE(CELL("address"))=6
(入力規則でリストは .Validation.Type = 6 )
で適当なスタイルを設定します

Ask_64818_入力規則と条件付き書式.ods (11.1 KB)


マクロの応用
[セルオブジェクト].Validation.Type
Validation.Type 部分を変えれば様々なセル情報を参照できます
例えば セルの高さを取得する時は Size.Height

Function CellHeight(Addr As String) As Integer
  CellHeight = 0
On Error GoTo ERR
  CellHeight = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(Addr).Size.Height
ERR:
End Function

注意事項

  • ドキュメントを開いたときはエラー値 0 を出力するため、Ctrl + Shift + F9 で再計算する必要があります
  • パラメータにシート情報を与えておらず、複数シートでは現在シートの情報を取るため他シートでは誤動作をしています
  • 本来は、Sheet()関数を付加、CELL(“coords”)関数を利用等で、関数にシート情報も与えてやる必要があります
  • シート関数として利用時、セルの該当プロパティを変更しても関数は再計算を発動しません、常に強制的再計算が必要です

とりあえず、今思いつくのだけ列挙

1 Like

単数形
https://opengrok.libreoffice.org/xref/core/sc/source/core/tool/interpr1.cxx?r=d5986d1c#2328

おそらく現状ユーザーサイドからは無理です。aListValPosと同一かどうかチェックしているからです。

https://opengrok.libreoffice.org/xref/core/sc/source/ui/view/gridwin4.cxx?r=692c5df1#1967

なお、この値は、TestHintWindow()によって変更されます。UpdateListValPos()は唯一の呼び出し元がTestHintWindow()です。

https://opengrok.libreoffice.org/search?project=core&full=&defs=&refs=aListValPos&path=&hist=&type=&xrd=&nn=1

で、こいつが呼び出されるのが、リサイズ、スクロール、カーソル移動です。他の操作の結果カーソル移動が発生する場合も含みます。ReadUserDataSequenceはよくわかりませんでしたorz

https://opengrok.libreoffice.org/s?refs=TestHintWindow&project=core

なお、選択したセルのみドロップダウンとなる挙動はExcelも同様でした。

1 Like

出来ないことが納得できました
詳細に検討していただきありがとうございます