[[20210106105545]] 『自作アイコンをツールバーに表示し、改行?させた』(しのみや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『自作アイコンをツールバーに表示し、改行?させたい』(しのみや)

 (何度もこの掲示板で教えて頂いておりまして、必要な動作が出来るようになり感謝しています。
  教えて頂いた記述は活用させて頂いておりますが、今回は質問用に短くさせてもらっております。)

 こうったことができるかなと思うことが出てきましたので、教えて頂けると助かります。

 現在、アドインでツールバーにこのような感じでボタンを追加しています。

    ■ ■ ■     |
    □ □ □     |
             |
 ユーザー設定のツールバー|

 【現在の記述】
 Private Sub Workbook_AddinInstall()

     Dim myBar      As Office.CommandBar
     Dim myButton   As CommandBarButton
     Dim myBar_Name As String

     myBar_Name = "パレット1"
     On Error Resume Next
     Application.CommandBars(myBar_Name).Delete
     On Error GoTo 0

     Set myBar = Application.CommandBars.Add(Name:=myBar_Name, Temporary:=True)

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(255,255,255)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(0,0,0)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(230,0,0)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With
     myBar.Visible = True

     myBar_Name = "パレット2"
     On Error Resume Next
     Application.CommandBars(myBar_Name).Delete
     On Error GoTo 0

     Set myBar = Application.CommandBars.Add(Name:=myBar_Name, Temporary:=True)

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(90, 90, 90)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(80, 80, 80)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(70, 70, 70)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     myBar.Visible = True

 End Sub

 【やりたいこと】

   ■ ■ ■  |  □ □ □  |
        |        |
    ユーザー設定のツールバー |

 ↑ここの2・3行目は空白にして、
          ↑こちらの1行目に表示させたい

 【やってみたこと】
 空のバーとボタンを追加してみたところ見た目は出来ました。
 しかし当然ですが、空のボタンが置かれてしまい不格好です…

     myBar_Name = "空"
     Application.CommandBars(myBar_Name).Delete

     Set myBar = Application.CommandBars.Add(Name:=myBar_Name, Temporary:=True)
     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     myBar.Visible = True

 どのようにしたらよいでしょうか

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 パレットを1個にまとめてしまっても良ければ、ですが、
 ↓こんな感じの代替案で「それっぽく」見せることはできそうな...

 Sub Bar_Add()

     Dim myBar      As Office.CommandBar
     Dim myButton   As CommandBarButton
     Dim myBar_Name As String

     myBar_Name = "パレット1"
     On Error Resume Next
     Application.CommandBars(myBar_Name).Delete
     On Error GoTo 0

     Set myBar = Application.CommandBars.Add(Name:=myBar_Name, Temporary:=True)

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(255,255,255)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(0,0,0)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(230,0,0)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With
     Rem コメントアウト---------------------------------------------------------
 '    myBar.Visible = True
 '
 '    myBar_Name = "パレット2"
 '    On Error Resume Next
 '    Application.CommandBars(myBar_Name).Delete
 '    On Error GoTo 0
 '
 '    Set myBar = Application.CommandBars.Add(Name:=myBar_Name, Temporary:=True)
     Rem -----------------------------------------------------------------------
     Rem 境界線を追加 ( .BeginGroup の代替として)
     With myBar.Controls.Add(Type:=msoControlButton)
        .Caption = "|"
        .Style = msoButtonCaption
        .Enabled = False
     End With
     Rem -----------------------------------------------------------------------
     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(90, 90, 90)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(80, 80, 80)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     Set myButton = myBar.Controls.Add(Type:=msoControlButton)
     With myButton
         .Caption = "RGB(70, 70, 70)"
         .OnAction = "'Button_Click " & .Caption
         .FaceId = 59
     End With

     myBar.Visible = True

 End Sub

(白茶) 2021/01/06(水) 12:53


 白茶さん ありがとうございます。
 位置を調整できるような項目があるのかと、調べておりましたが
 なかなか見つからなくて…

 Captionの表示はさせるけれど、ボタンは見せないのですね。
 パレット1つで大丈夫ですので、活用させて頂きます。
(しのみや) 2021/01/06(水) 14:56

 >  位置を調整できるような項目があるのかと、調べておりましたが
 >  なかなか見つからなくて…

 それはもう「リボン使ってね」ってことでしょうよ。
 アドインで実装するなら尚更です。

 私も自分用アドインで動的にメニューやらボタンやら作ってたクチなので、
 Excel2003から2010に乗り換えた時には、
 Office Ribbon Editor(サポート終了した方)使って
 専用のリボンタブからコンテキストメニュー等々、頑張って作り直した覚えがあります。

 CommandBarほど手軽な作業にはならないでしょうけど
 これを機に脱却も検討してみては如何でしょうか?
 と思います

(白茶) 2021/01/06(水) 17:06


 情報ありがとうございます。

 テキストで書けそうですね。

 ただ、私がもうちょっとVBAが落ち着いて使えるようになったからのほうが良さそう…

 また時間ができればチャレンジしてみたいと思います。

(しのみや) 2021/01/07(木) 09:53


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.