2009年6月19日金曜日

メニューバーの作り方

今回は、メニューバーにボタンを追加して、そこからプログラムを実行してみます。

VBAエディターの左側のプロジェクトウィンドウの中のThis WorkBookの部分をクリックすると、

このEXCELブックをOpenした時や、終了する時のサブルーチンを書く事ができます。



実際には、下記コーディングをすると、メニューバーへボタンを追加されるので、そのボタンを押すと、プログラムが実行されます。

Option Explicit

'ブック(EXCELファイルを開く時に実行されるサブルーチン)
Private Sub Workbook_Open()
  'エラーがあっても無視して処理を続行するモード
  On Error Resume Next
  '変数の定義
  Dim wCtrl As Variant, wCtrl1 As Variant, wCtrl2 As Variant, wCtrl3 As Variant, wName As String
  'マクロ実行時に、シート表示が更新されないようにするモードにセット
  Application.ScreenUpdating = False   'False→偽、True→真
  'メニューバーの定義
  Application.CommandBars("Worksheet Menu Bar").Controls("マクロサンプル").Delete                  '一旦、該当メニューバーを削除
  Set wCtrl1 = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)   'メニューバーの追加
  With wCtrl1
       .Caption = "マクロサンプル"   '該当メニューバーに名前をセット
  End With
  'メニューバーの中のコマンドバーを定義
  Set wCtrl = wCtrl1.Controls.Add(Type:=msoControlButton)
  With wCtrl
       .Caption = "計算"             '該当コマンドーバーに名前をセット
       .Style = msoButtonCaption     '該当コマンドーバーのスタイルをセット
       .OnAction = "計算"            '該当コマンドーバーの実行サブルーチン名をセット
       .Visible = True               '該当コマンドーバーの表示
  End With
  'メニューバーの中のコマンドバーを定義
  Set wCtrl = wCtrl1.Controls.Add(Type:=msoControlButton)
  With wCtrl
       .Caption = "罫線"
       .Style = msoButtonCaption
       .OnAction = "罫線"
       .Visible = True
  End With
  'メニューバーの中のコマンドバーを定義
  Set wCtrl = wCtrl1.Controls.Add(Type:=msoControlButton)
  With wCtrl
       .Caption = "色づけ"
       .Style = msoButtonCaption
       .OnAction = "色づけ"
       .Visible = True
  End With
  'マクロ実行時に、シート表示が更新されるようにするモードにセット
  Application.ScreenUpdating = True
End Sub

'ブック(EXCELファイルを閉じる時に実行されるサブルーチン)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  On Error Resume Next
  If Cancel = True Then
     Exit Sub
  End If
  'メニューバーの削除
  Application.CommandBars("Worksheet Menu Bar").Controls("マクロサンプル").Delete
End Sub

メニューバーの右側に、マクロサンプルという文字ボタンが増えていますね!


この技は、知らない人が多いですが、結構、便利です。

これを応用すると、マクロ専用のEXCELファイルを作成しておき、それを実行すると、他のEXCELを開いてもメニューバーはそのままなので、いろいろと便利です!




それでは!

0 件のコメント:

コメントを投稿