• ベストアンサー

エクセルVBA メニューバーにメニューを追加する

エクセルVBAにて、ブックを開くと自動メニューバーにメニューを追加するというコードを作成しています。 メニューの追加そのものは問題なく出来たのですが、例えば追加された状態で上書き保存し、再度開くと、1つ追加された状態でもう1つメニューが追加されてしまうという状況となってしまいました。 IF文で重複の判定ができると良いのですが、コードが分からなくて困っております。どなたかご教授下さい。 そしてもう1つ、メニューバーに追加した新しいメニューについて、手動でリセットする方法はありますでしょうか。表示→メニューバー→ユーザ設定でリセットしてもユーザ設定だけは保持されるようで... こちらもお願いします。 コードはそのまま貼り付けるとNGワードに引っかかるので(何故かは分かりません)、申し訳ありませんがプリントスクリーンしたものを画像として添付致します(こちらも回避する方法があれば良いのですが...OKWaveは使いづらいです)。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 ためしに直してみました。自前のメニューには、必ず、Temporary 属性をTrue にしてください。 '------------------------------------------- Sub Auto_Open()   Dim MyCB As CommandBar   Dim myMenu As CommandBarPopup   Dim myMenuCom As CommandBarButton   Dim cnt As Integer   Set MyCB = Application.CommandBars("WorkSheet Menu Bar")   With MyCB     On Error Resume Next     .Controls("オリジナルプログラム(&C)").Delete     On Error GoTo 0   End With   cnt = MyCB.Controls.Count   With MyCB.Controls.Add(Type:=msoControlPopup, Before:=cnt + 1, Temporary:=True)     .Caption = "オリジナルプログラム(&C)"     Set myMenuCom = .Controls.Add(Type:=msoControlButton)   End With   With myMenuCom     .Caption = "メインメニュー(&U)"     .OnAction = "menu_open"     .BeginGroup = False     .FaceId = 610   End With End Sub

kentaroror
質問者

お礼

回答ありがとうございます。その通りにやってみたらばっちりでした。

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

こちらのような手法はいかがでしょう。 作成済みであればいったん削除 存在しないとエラーが出るが、On Error…で回避 1.1 新しいメニューを追加する http://www.happy2-island.com/access/gogo03/capter50101.shtml

関連するQ&A