- ベストアンサー
エクセルVBA メニューバーにメニューを追加する
エクセルVBAにて、ブックを開くと自動メニューバーにメニューを追加するというコードを作成しています。 メニューの追加そのものは問題なく出来たのですが、例えば追加された状態で上書き保存し、再度開くと、1つ追加された状態でもう1つメニューが追加されてしまうという状況となってしまいました。 IF文で重複の判定ができると良いのですが、コードが分からなくて困っております。どなたかご教授下さい。 そしてもう1つ、メニューバーに追加した新しいメニューについて、手動でリセットする方法はありますでしょうか。表示→メニューバー→ユーザ設定でリセットしてもユーザ設定だけは保持されるようで... こちらもお願いします。 コードはそのまま貼り付けるとNGワードに引っかかるので(何故かは分かりません)、申し訳ありませんがプリントスクリーンしたものを画像として添付致します(こちらも回避する方法があれば良いのですが...OKWaveは使いづらいです)。
- みんなの回答 (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
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
こちらのような手法はいかがでしょう。 作成済みであればいったん削除 存在しないとエラーが出るが、On Error…で回避 1.1 新しいメニューを追加する http://www.happy2-island.com/access/gogo03/capter50101.shtml
お礼
回答ありがとうございます。その通りにやってみたらばっちりでした。