|
メニューバーにボタンがこんな感じとして。
新メニュー
│
├ マクロ1
│
├ マクロ2
│
├ マクロ3▼ ─ マクロ3-1
│
└ マクロ4▼ ─ パラマクロ4-1 キャプション名取得は、この階層まで。
│
└ パラマクロ4-2
│
│ ↓ 注)キャプション名取得は、この階層以下は対応させてません。
└ マクロ5▼ ─ パラマクロ5-1
Sub パラメータの場合()
With Application.CommandBars("Worksheet Menu Bar").Controls
With .Add(Type:=msoControlPopup, Temporary:=True)
.Caption = "新メニュー"
With .Controls
With .Add(Type:=msoControlButton)
.Caption = "マクロ1"
.OnAction = "Mcro1"
.Parameter = "パラマクロ1"
End With
With .Add
.Caption = "マクロ2"
.OnAction = "Mcro1"
.Parameter = "パラマクロ2"
End With
With .Add(Type:=msoControlPopup)
.BeginGroup = True
.Caption = "マクロ3"
With .Controls.Add
.Caption = "マクロ3-1"
.OnAction = "Mcro1"
.Parameter = "パラマクロ3-1"
End With
End With
With .Add(Type:=msoControlPopup)
.Caption = "マクロ4"
With .Controls
With .Add
.Caption = "マクロ4-1"
.OnAction = "Mcro1"
.Parameter = "パラマクロ4-1"
End With
With .Add
.Caption = "マクロ4-2"
.OnAction = "Mcro1"
.Parameter = "パラマクロ4-2"
End With
End With
End With
End With
End With
End With
End Sub
Sub Mcro1()
With Application.CommandBars.ActionControl
MsgBox "ボタンキャプション" & vbLf & .Caption & vbLf & vbLf & _
"パラメータ" & vbLf & .Parameter
End With
End Sub
・余談
自分で使っているメニューバーは、独自のアイコンを持たせたいためマクロでボタン等は作ってません。
マクロでオリジナルアイコンを反映させるには、どこかのシートにアイコン用図形を貼り付けておいて、それをコピー、貼り付けを行うので、エクセルに貼り付けとして先にコピー、エクセル起動、貼り付けの手順を踏むとコピーされたアイコンが張り付くといった情けない結果になるから.....。
で、どうやっているのかといえば、ユーザー設定で作っておいて、起動時にメニューバーに移動させる方法を取ってます。
至極たまに、起動時にエラーが発生する時がありますが、エクセルの不具合でボタンを移動後、コピー元のツールバーを消せなかった時におきます。そういう時は、手動でそのツールバーを消してやれば良いです。
|
|