コマンドバーに配置されたコントロールはExecuteメソッドで実行可能です。
マクロの機能として用意されているものをExecuteメソッドで実行する意味は
ありませんが、対応する機能がVBAのメソッドなどで公開されていない場合、
あるいはどうしても対応するVBAのコマンドが分からない場合、などがありま
す。
サンプルではシート上の空白セルを選択して”標準”コマンドバーのオートSum
を実行します。(例えば数値データが入力されたシートがあり、数行おきの空白
に一括でワークシートSum関数を入力して集計を行いたいとき・・・)
Sub ExecuteControl()
Dim C As CommandBarControl
Dim Rng As Range
Set C = CommandBars("Standard").Controls("オート SUM(&A)")
'97では”オート”は半角
Set Rng = ActiveSheet.UsedRange
Union( _
Rng.SpecialCells(xlCellTypeBlanks), _
Rng.Offset(Rng.Rows.Count).Resize(1) _
).Select
'※最下行の一行下を選択するためUnionを使用
C.Execute
End Sub
また、コントロールのIDが分かっている場合にはFindControlメソッドを使用するこ
とも出来ます。次のサンプルでは新規作成(ID=18)を実行します。
Sub ExecControl()
Dim Ctrl As CommandBarControl
Set Ctrl = CommandBars.FindControl(ID:=18)
Ctrl.Execute
End Sub
※(参考)
テクニック集:コマンドバー機能一覧を作成する
テクニック集:Visual Basic Editor コマンドバー機能一覧
テクニック集:メニューバーへのコントロール追加と処理の分岐
テクニック集:ワークシートメニューバーの機能一覧
テクニック集:特定のコントロールを指定してIDを調べるには
|