personal.xls 強化講座

Home What's
New
Site
Concept
生産性向上
基本テクニック
トラブル回避
テクニック
生産性向上
リンク
personal.xls
強化講座
生産性向上
ツール
Site
Map
Coffee
Break
Guest
Book
地球風
画像館
Q&A Salon
EXCELの質問はこちらへ

 

3.メニューバーの追加カスタマイズ
07/29/2000 -


personal.xls にせっかくオリジナルの便利なマクロを登録しても、それを起動するのに毎回「ツール」メニューから目的のマクロ名を探し出して「実行」ボタンを押すのはスマートではありません。
そこで、EXCELのメニューバーに自分専用のメニューを追加してしまいましょう。

なお、以下のマクロコーディングでは半角カタカナが含まれています。本来、HTMLには使用してはいけないことを承知していますが、メニュー名称に半角カタカナを使用しているので (このページがWindows版EXCELを対象としていて、ご覧になっている方もWindowsパソコンを使用しているという前提で) そのまま掲載しています。ご了承下さい。
メニュー名称を全角カタカナにしてももちろん問題ありません。

このページのマクロ(テキスト)の表示

以下のマクロ例では、「あるとちょっと便利なマクロ」のコーナーで紹介したマクロを、下図のようなMyTools(X)というオリジナルメニューに登録しています。

2001.11.14 「フォント設定の一覧を表示する」を追加しました。
2002.10.20 「Menu追加」モジュールを一部修正しました。
        (Application.CommandBars("Worksheet Menu Bar").Reset でメニューバーをリセットすると、アドインで組み込まれた自動保存などの
         メニューもリセットされてしまうため、MyTools(X) メニューのみ個別で削除するように変更)

 

Excel2000の場合


Excel XP(2002)の場合


 
なお、マクロ中の FaceID に指定している番号ですが、私は Susumu KAWAMURA's homepage というホームページに掲載されている画像一覧表を参考にさせていただいています。ここから、上図のメニュー名称の左に表示されるアイコンとしてふさわしいものを探して、指定しています。
 

Option Explicit

Sub auto_open()

    Menu削除 1     'ここで起動時に(念のためいったん削除してから)メニューを追加(作成)します   
    Menu追加 1     '既にauto_open() を記述している場合は、以下の2行を追加します。   

End Sub

 
Sub auto_close()
 
    Menu削除 1        'エクセル終了時にメニューを削除します    
 
End Sub

 
Sub Menu追加(num%)     'ダミーの引数(num%)を付けているのは、「ツール」「マクロ」から指定できないようにするため

 
    Dim myBar As CommandBar
    Dim myCtrl As CommandBarControl

'   Application.CommandBars("Worksheet Menu Bar").Reset     '20010224
    Menu削除 1                                              '20021021
    Set myBar = CommandBars("Worksheet Menu Bar")
    Set myCtrl = myBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
    With myCtrl
                                                                ''最初にココで、メニューバーに追加するメニュー名を指定する。
        .Caption = "MyTools(&X)"        '(&英数字)はアクセスキーの指定(なくてもOK)
        .Visible = True
        .Controls.Add Type:=msoControlButton
        .Controls(1).Caption = "電卓の起動(&0)"        '表示されるメニューの名前を指定
        .Controls(1).OnAction = "Dentaku"        >        '起動するマクロを指定
        .Controls(1).FaceId = 283                               'メニューの左に表示されるアイコンを指定(指定しなくてもOK)
        .Controls.Add Type:=msoControlButton
        .Controls(2).Caption = "ウィンドウの上下整列(&1)"        'メニュー名の後ろに(&英数字)と記述すると、アクセスキーの指定になる(なくてもOK)
        .Controls(2).OnAction = "ウィンドウの上下整列"
        .Controls(2).FaceId = 298
        .Controls(2).BeginGroup = True                        'これを指定すると、メニューをセパレートする横棒が入る
        .Controls.Add Type:=msoControlButton
        .Controls(3).Caption = "アクティブシートの複数画面表示(&2)"
        .Controls(3).OnAction = "同一Sheetの複数画面表示"
        .Controls(3).FaceId = 585
        .Controls.Add Type:=msoControlButton
        .Controls(4).Caption = "セル縦位置中央揃え(&3)"
        .Controls(4).OnAction = "セル縦位置中央揃え"
        .Controls(4).FaceId = 2062
        .Controls(4).BeginGroup = True
        .Controls.Add Type:=msoControlButton
        .Controls(5).Caption = "セル縦位置上詰め(&4)"
        .Controls(5).OnAction = "セル縦位置上詰め"
        .Controls(5).FaceId = 2061
        .Controls.Add Type:=msoControlButton
        .Controls(6).Caption = "列幅で折り返し(&5)"
        .Controls(6).OnAction = "列幅折り返し表示"
        .Controls(6).FaceId = 119
        .Controls.Add Type:=msoControlButton
        .Controls(7).Caption = "全シートをHOMEポジションに(&6)"
        .Controls(7).OnAction = "To_Home"
        .Controls(7).FaceId = 1826
        .Controls(7).BeginGroup = True
        .Controls.Add Type:=msoControlButton
        .Controls(8).Caption = "入力後のセル移動方向の変更(&7)"
        .Controls(8).OnAction = "セル移動方向切替"
        .Controls(8).FaceId = 133
        .Controls.Add Type:=msoControlButton
        .Controls(9).Caption = "枠線の表示切替(&W)"
        .Controls(9).OnAction = "枠線表示切替え"
        .Controls(9).FaceId = 217
        .Controls.Add Type:=msoControlButton
        .Controls(10).Caption = "行列番号の表示切替(&G)"
        .Controls(10).OnAction = "行列番号表示切替"
        .Controls(10).FaceId = 800
        .Controls.Add Type:=msoControlButton
        .Controls(11).Caption = "A1形式R1C1形式の切替(&A)"
        .Controls(11).OnAction = "A1_R1C1"
        .Controls(11).FaceId = 503
        .Controls.Add Type:=msoControlButton
        .Controls(12).Caption = "最近使用したファイルの一覧に追加(&S)"
        .Controls(12).OnAction = "Add_RecentFiles"
        .Controls(12).FaceId = 462
        .Controls.Add Type:=msoControlButton
        .Controls(13).Caption = "フォント設定の一覧を表示する(&V)"
        .Controls(13).OnAction = "font_check"
        .Controls(13).FaceId = 291
        .Controls(13).BeginGroup = True
        .Controls.Add Type:=msoControlButton
        .Controls(14).Caption = "全ての隠しシートを表示する(&F)"
        .Controls(14).OnAction = "全シート表示"
        .Controls(14).FaceId = 2587
        .Controls.Add Type:=msoControlButton
        .Controls(15).Caption = "シートを確認しながら非表示にする(&H)"
        .Controls(15).OnAction = "シート隠蔽"
        .Controls(15).FaceId = 1641
    End With
End Sub

 
Sub Menu削除(num%)

    Dim myBar  As CommandBar
 
    Set myBar = CommandBars("Worksheet Menu Bar")
    On Error Resume Next
    myBar.Controls("MyTools(&X)").DELETE
    On Error GoTo 0
 
End Sub

 
 

Back Next

【目次に戻る】

モーグ
Google
  Web excel7.com