• 締切済み

Excell2010VBAmacro互換性

マイクロソフトオフィス2010EXCELマクロについて質問させてください。 VBAマクロでマウス右クリック時にポップアップメニューを出し、 自作マクロを呼び出すようにしました。動作している。 このマクロを別PCのオフィス2013で動作させると、 マクロ内部ではポップアップメニューを作成動作している ようです(デバッグで通っていること確認)ようですが、 EXCEL画面上にはメニューが表示されません。 サンプルマクロは下記参照。 非互換または設定漏れがあるのでしょうか?   サンプルマクロ Sheet1 --------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Application.CommandBars("Cell").Reset '右クリックメニューを初期設定に戻す Call set_RightMenu '右メニュー登録 End Sub Module1 --------------------------------------- Sub reset_RightMenu() ' '右クリックメニューを初期化 ' Application.CommandBars("Cell").Reset End Sub Public Sub set_RightMenu() ' ' 右クリックメニューを設定する ' Call reset_RightMenu '右クリックメニュー初期化 With Application.CommandBars("Cell") _ .Controls.Add() .BeginGroup = True .Caption = "menu0" .FaceId = 682 .OnAction = "menu0" End With With Application.CommandBars("Cell") _ .Controls.Add(Type:=msoControlPopup) .BeginGroup = True .Caption = "SubMenu" With .Controls.Add(Type:=msoControlButton) .Caption = "menu1" .FaceId = 931 .OnAction = "menu1" End With With .Controls.Add(Type:=msoControlButton) .Caption = "menu2" .FaceId = 931 .OnAction = "menu2" End With End With End Sub Sub menu0 MsgBox "****** Menu 0 *******" End Sub Sub menu1 MsgBox "****** Menu 1 *******" End Sub Sub menu2 MsgBox "****** Menu 2 *******" End Sub

みんなの回答

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.2

やはり64bit版ですか・・・? Officeは64bit版では使えない機能があり、不安定らしく、32bit版が公式にも一般的にも推奨されてますよ。 VBAは、シンプルなモノでないと厳しいかもしれないです。 32bit版を入れなおすことをオススメしたいです。

Skyrunner206
質問者

お礼

二回も、回答ありがとうございました。 マクロを入れていない新規ファイルでも 右クリックメニューが一切出ないことに気づきました。 マクロの実行失敗等でxlbファイルが壊れたものと推察します。 xlbファイルの削除で解決しました。 フォルダオプションのファイルとフォルダの表示で、すべての隠しフォルダ、隠しファイルを表示するにチェックを入れて表示される下記ファイルを削除。 C:\Users\<ユーザー>\AppData\Roaming\Microsoft\Excel\Excel14.xlb (2003は11、2007が12、2010が14 2013が15となります)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

僕の環境(Windows7-64bit版 / Excel2013-32bit版)では動きましたよ。 何が違うのかな…Officeは64bit版? もうすこし問題を絞り込めるとよいかと↓ ・表示されないのは"SubMenu"だけ?"menu0"も? ・追加にちゃんと成功しているか  Set o = Application.CommandBars("Cell").Controls ローカルウィンドウで o の中身を確認。.visibleがTrueか、も。 ・あとは… 追加(set_RightMenu)は1回実行したら、Excelを閉じても設定が残るはず。BeforeRightClickをやめて、ボタンやVBEから直接1回だけset_RightMenuを実行してください。 ※毎回追加だと、Beforexxに問題があったり、設定反映が遅れているなどの可能性もあるので。

Skyrunner206
質問者

お礼

回答ありがとうございます。 ・表示されないのは、menu0もSubMenuもすべてです。 ・Set o = Application.CommandBars("Cell").Controls ローカルウィンドウで o の中身を確認。.visibleがTrueです。 ・追加(set_RightMenu)は1回実行したら、Excelを閉じても設定が残るはず  なので、menu0などをセットする直前にリセットしています。 OSはVISTAです。 原因は、何が考えられるでしょうか?

関連するQ&A