Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : Excel 2016)
色のダイアログ表示
投稿日時: 23/10/06 11:49:09
投稿者: taichi

Application.Dialogs(xlDialogEditColor).Show (1) や
Application.Dialogs(xlDialogPatterns).Show ではなく
リボンにあるセルに色を塗るダイアログはコードで表示可能ですか?

回答
投稿日時: 23/10/06 13:11:29
投稿者: higejee

 なさげですね。そもそもそれはダイアログではないだろうし。

回答
投稿日時: 23/10/06 13:39:26
投稿者: simple

色を塗る動作は、下記ですが、色を選択する画面ですよね。ちょっと見つからないですね。

Sub test()
    Application.CommandBars.ExecuteMso "CellFillColorPicker"
End Sub

ところで、どんな場合に使うんですか?
マクロ実行のなかで、色を選択させるんですか?
予め選択させておいたらダメなんですか?(色は直前に使用したものを覚えているので)

回答
投稿日時: 23/10/06 15:42:10
投稿者: Suzu

引用:
リボンにあるセルに色を塗るダイアログはコードで表示可能ですか?

 
セルの書式設定 の 塗りつぶし タブ と言う事でしょうか?
 
それとも、
ALT → H → H で表示される テーマの色?
 
後者の事なら、・・
苦し紛れで、 ショートカットメニュー の ALT H H を
WshShell の SendKeys を使って 送る事でしょうか。

投稿日時: 23/10/06 18:29:27
投稿者: taichi

higejeeさん、simpleさん、Suzuさん ありがとうございます。
 
ALT → H → H で表示される テーマの色? で現れる色の選択です。
 
説明は少し、無づかしいのですが、1頁に8人印字できるIdCardを作成中です。
各カードは文字色や背景ガ選択可能にしています。
シートは3枚で、sh1には個人の名前(Userが入力)、文字色(Userが選択)、カードの背景(Userが選択) etc
sh2には印字されるIdCard,名前や部署はsh1の情報をTextBoxにCell番地の式を代入しています。
sh3には背景となるデザイン(msoPicture)を9種類配置しています。
 
sh1で希望文字セル(8個)を選択したときに(Worksheet_SelectionChange)で、
Userになじみのある色選択を表示させて該当セルに希望色をフォントの色としてではなく、
見易いようにセルに塗りつぶしたいのです。
 
無理なようならApplication.Dialogs(xlDialogPatterns).Show でいきます。
 

投稿日時: 23/10/06 21:42:18
投稿者: taichi

        SendKeys "%"
        SendKeys "HH"
でやってみたのですが、反応が遅いので止めました。

回答
投稿日時: 23/10/07 10:27:57
投稿者: simple

ご自分の方法で行ってください。
 
ちなみに、リボンの実行路線で以下のものもありました。(「その他の色...」に相当)
これで一応、色の指定と塗りつぶしが実行できます。

Sub test2()
      Application.CommandBars.ExecuteMso "FontShadingColorMoreColorsDialog"
End Sub

 
なお、ExecuteMso を使う際には、
引数である"コントロールID"を調べる必要があります。
調べ方は以下を参照してください。(Tipsとして有益)
https://www.ka-net.org/blog/?p=4438

回答
投稿日時: 23/10/07 17:30:36
投稿者: Suzu

反応が遅い?
 
単に、キー を送ってるだけですので 体感できるほど遅いはずはないのですが・・
 
 
何にしても、そのインターフェイスに拘りがおありなのであれば
当方としてはこれ以上の方法は見つかりませんでした。

投稿日時: 23/10/08 11:07:58
投稿者: taichi

 simpleさん、
      Application.CommandBars.ExecuteMso "FontShadingColorMoreColorsDialog" は
   Application.Dialogs(xlDialogEditColor).Show (1) と同じでした。
 
 サイト https://www.ka-net.org/blog/?p=4438 ありがとうございました。
 
Suzuさん、
 私の希望は ALT → H → H でバッチリかなえられているのですが、私の環境Win11 では
  体感4秒近くもかかって表示されます。
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target(1), [文字色Cell]) Is Nothing Then
        SendKeys "%"
        SendKeys "HH"
' Application.Dialogs(xlDialogPatterns).Show
    End If
End Sub
ご面倒で使用が、Suzuさんの環境では体感何秒ぐらいで開くか教えていただけないでしようか?
 

投稿日時: 23/10/08 14:11:41
投稿者: taichi

ALT → H → H で表示される テーマの色 の画面をだすのに、
それらしき
Application.CommandBars("Fill Color").Visible = True
をさがしただしてきたですが、エラーは出ないですが、画面には何もあらわれません。

回答
投稿日時: 23/10/08 19:15:49
投稿者: simple

リボンを使ったユーザーインターフェイスに変わったので、昔のものがそのまま使えるとは限りません。
 
ちなみに、SendKeysを使ったものはさほど遅延はありませんよ。ほぼ同時に表示されます。
(当方Win10,Excel2019)

トピックに返信