簡単なアドインを作ってみる(1) メニューバー編

ここでは枠線の表示/非表示を切り替えるアドインを作ってみましょう。
ThisWorkbookに以下の2つのプロシージャを入力します。
Private Sub Workbook_AddinInstall()
  Dim SubMenu As Object
  Set SubMenu = Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)").Controls.Add
  With SubMenu
    .Caption = "グリッド ON/OFF"
    .OnAction = "gChangeGrid"
  End With
End Sub

Private Sub Workbook_AddinUninstall()
  On Error Resume Next
  Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)").Controls("グリッド ON/OFF").Delete
End Sub
次に標準モジュールを追加して、以下を入力します。
Public Sub gChangeGrid()
  ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
End Sub
ここまで出来たらファイルを保存します。
ファイルタイプは、Excelアドイン(*.xla)
Excel2007以降ではマクロが別ファイルになってたような気がしますが
にゃたろーはExcel2007を持っていないため分かりません。(あぁ・・2007欲しい・・)
拡張子を除いた部分(ベース名)がアドイン名称になります。

保存する場所は何処でも良いのですが、
\Documents and Settings\[ユーザ名]\Application Data\Microsoft\AddIns
に保存すれば、アドイン追加の時に最初から表示されているのでラクです。


【解説】
■Workbook_AddinInstall()
Dim SubMenu As Object
オブジェクト変数の宣言です。

Set SubMenu = Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)").Controls.Add
メニューバーのツール(&T)の一番下に項目を1個追加します。

.Caption = "グリッド ON/OFF"
メニューに表示される文字列を設定します。

.OnAction = "gChangeGrid"
枠線の表示/非表示を切り替える処理が書いてあるプロシージャ名を設定します。

■Workbook_AddinUninstall()
Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)").Controls("グリッド ON/OFF").Delete
メニューバーのツール配下から「グリッド ON/OFF」を削除します。

■gChangeGrid()
ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines
NotによってON/OFF切り替えを行っています。