[[20120228164509]] 『マクロで作ったメニューバーが増えていく』(あや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『マクロで作ったメニューバーが増えていく』(あや)

 XP 2003

 過去に教えていただいた
 [[20110405160117]] についてです。

 おかげさまで、作ったマクロをアドインを使ってメニューバーに追加して使えています。

 ここで…時々なのですが
 エクセル起動時にこのメニューバーが複数出てきたり、
 エクセルを×で閉じて開き直すと、
 メニューバーがひとつずつ追加されていくような形になってしまうことがあります。

 毎回ではなく時々です。

 addinsFile.xlaの中身 ---
 Option Explicit

 Private Sub Workbook_Open()

    On Error Resume Next

    Dim myBar As CommandBar, myButton As CommandBarButton
    Set myBar = Application.CommandBars.Add(Position:=msoBarTop)

    'オートフィルタを表示・非表示
    Set myButton = myBar.Controls.Add(Type:=msoControlButton)

    myButton.OnAction = "オートフィルタを表示非表示"
    myButton.Caption = "オートフィルタを表示非表示"
    myButton.FaceId = 94

    myBar.Visible = True

    On Error GoTo 0

 End Sub

 Private Sub Workbook_BeforeClose(Cancel As Boolean)

    On Error Resume Next

    Application.CommandBars("ユーザー設定 1").Delete

    On Error GoTo 0

 End Sub

 Module1 の中身 ------
 Sub オートフィルタを表示非表示()

    On Error Resume Next

    Selection.AutoFilter

 End Sub

 とりあえずはユーザ設定で削除していけば良いのですが、
 なんとか解消したく質問させていただきましたm(_ _)m


 異常終了した時は、
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 が実行されないから、残骸が残りますね。
 その残骸を確認もしないで、闇雲にツールバー等を作っているから、
 ダブりどころか3つ4つと増えていくかもしれないですね。
 BJ

正しい方法は知りませんが、私はこうしています(マナ)

 開くとき:
    On Error Resume Next
    Application.CommandBars("オートフィルタ").Delete  '★追加
    Set myBar = Application.CommandBars.Add(Position:=msoBarTop)
    myBar.Name = "オートフィルタ"    '★追加

 閉じるとき:
    On Error Resume Next
    Application.CommandBars("オートフィルタ").Delete      '★名前修正

 BJさん ありがとうございました。

 マナさん ありがとうございました。
 追加と名前修正で対応しましたm(_ _)m
 ご丁寧に教えていただき、助かりました。

 (あや)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.