[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『右クリック メニュー追加のアドイン作成』(Vba初心者)
右クリックにメニューを追加するアドインを作成し、アドイン登録中は全てのエクセルで使用できるようにしたいです。
右クリックにメニューを追加するコードは作成できたのですが、アドイン登録しても動作せず、手動で動作させるとエクセルを閉じるまでは使用できますが、開き直すと消えてしまいます。
アドイン登録中はどのエクセルファイルでも右クリックにメニュー追加した状態にする方法を教えていただけませんでしょうか?
サンプルコードです。メニューを2階層表示させて、2階層目にマクロをリンクして使いたいです。
With CommandBars("cell").Controls.Add(Before:=1,Type:=msoControlPopup,) .Caption = "マクロ" With .Controls.Add .Caption = "A" .OnAction = "A" End With With .Controls.Add .Caption = "B" .OnAction = "B" End With With .Controls.Add .Caption = "C" .OnAction = "C" End With End With
End sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>手動で動作させるとエクセルを閉じるまでは使用できますが、開き直すと消えてしまいます。
とのことなので、【アドインブックが開かれたとき】に実行して、【アドインブックが閉じるとき】に右クリックメニューから消すマクロを実行じゃないですかね?
したがって、
アドインブックのThisWorkbookモジュールに
Private Sub Workbook_Open() '右クリックメニューを追加するマクロ End Sub '================================================== Private Sub Workbook_BeforeClose(Cancel As Boolean) '追加した独自メニューを削除するマクロ End Sub
のようにしてないと仰るような動作にならないような・・・
(もこな2 ) 2020/04/15(水) 15:53
ThisWorkbookモジュールに以下コードを入れたところエラーが発生するようになりました。
「エラー 91 オブジェクト変数または With ブロック変数が設定されていません」
With CommandBars("cell").Controls.Add(Before:=1, Type:=msoControlPopup) この部分でエラーが発生しているようで、標準モジュールでは動作していたのですが、原因は何が考えられますでしょうか?
Private Sub Workbook_Open()
With CommandBars("cell").Controls.Add(Before:=1, Type:=msoControlPopup) .Caption = "マクロ" With .Controls.Add .Caption = "A" .OnAction = "A" End With With .Controls.Add .Caption = "B" .OnAction = "B" End With With .Controls.Add .Caption = "C" .OnAction = "C" End With End With
End Sub
(Vba初心者) 2020/04/15(水) 16:58
CommandBarsプロパティの親を指定してください。 CommandBarsオブジェクトの親は、ApplicationオブジェクトとWorkBookオブジェクトがありえます。
ThisWorkbookモジュールでは、親オブジェクトに何も書かないと WorkBookオブジェクトであるThisWorkbookがデフォルトで親と仮定されます。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.commandbars
には、以下の記載があり、 >ブックが別のアプリケーションに埋め込まれ、ブックをダブルクリックしてユーザーが >アクティブ化した場合、このプロパティを**workbook** オブジェクトに対して使用する >と、他のアプリケーションで使用可能な excel のコマンドバーのセットが返されます。 >それ以外の場合、Workbook オブジェクトにこのプロパティを使用すると Nothing を返します。 ThisWorkBook.CommandBarsはNothingになります。
インデントは 意味を考えてつけましょう
Private Sub Workbook_Open()
With Application.CommandBars("cell").Controls.Add(Before:=1, Type:=msoControlPopup) .Caption = "マクロ" With .Controls.Add .Caption = "A" .OnAction = "A" End With With .Controls.Add .Caption = "B" .OnAction = "B" End With With .Controls.Add .Caption = "C" .OnAction = "C" End With End With
End Sub (´・ω・`) 2020/04/15(水) 22:10
助かりました。
(Vba初心者) 2020/04/16(木) 11:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.