|
コントロールツールボックスを使い、ワークシート上にボタンを作ることができますが、どのシートをアクティブにしていても利用できるボタンといえば、やはりVBAによるコマンドバーを作る以外にはありません。さらに既定のコマンドバーを消してしまえば、独自の環境を作り上げることができます。
Public MyCB As CommandBar
Sub 独自のコマンドバーを作る()
With Application.CommandBars.Add("MyCommandBar", msoBarTop, False, True)
.Visible = True
With .Controls
With .Add(msoControlButton)
.Style = msoButtonIconAndCaption ' アイコンを表示する場合
' .Style = msoButtonCaption ' アイコンを表示しない場合
.Caption = "Button1(&A)"
.OnAction = "Macro1"
.FaceId = 2 ' アイコンを表示する場合
End With
With .Add(msoControlPopup)
.Caption = "Popup(&B)"
With .Controls
With .Add(msoControlButton)
.Style = msoButtonIconAndCaption ' アイコンを表示する場合
' .Style = msoButtonCaption ' アイコンを表示しない場合
.Caption = "Button2"
.OnAction = "Macro2"
.FaceId = 3 ' アイコンを表示する場合
End With
End With
End With
With .Add(msoControlComboBox)
.Caption = "ComboBox"
.AddItem "List1"
.AddItem "List2"
.AddItem "List3"
.Text = "List1"
.OnAction = "Macro3"
End With
With .Add(msoControlEdit)
.Caption = "EditBox"
.OnAction = "Macro4"
.Text = "Input Please"
End With
End With
End With
Set MyCB = Application.CommandBars("MyCommandBar")
End Sub
Sub Macro1()
MsgBox "Button1 が押されました"
End Sub
Sub Macro2()
MsgBox "Button2 が押されました"
End Sub
Sub Macro3()
MsgBox "コンボボックスの値: " & MyCB.Controls("ComboBox").Text
End Sub
Sub Macro4()
MsgBox "エディットボックスの値: " & MyCB.Controls("EditBox").Text
End Sub
|