dポイントプレゼントキャンペーン実施中!

ググッテみると下記をVBAに追加したら良いと出ましたが

Sub 右クリックメニュー追加()
 Dim myCBCtrl As CommandBarButton
 Set myCBCtrl = Application.CommandBars("Cell").Controls.Add _
   (Type:=msoControlButton, ID:=370, Before:=4, Temporary:=True)
 myCBCtrl.Caption = "値の貼り付け★★★"
 Set myCBCtrl = Application.CommandBars("Cell").Controls.Add _
   (Type:=msoControlButton, ID:=872, Before:=9, Temporary:=True)
 myCBCtrl.Caption = "書式のクリア★★★"
 Set myCBCtrl = Application.CommandBars("Cell").Controls.Add _
   (Type:=msoControlButton, ID:=1964, Before:=10, Temporary:=True)
 myCBCtrl.Caption = "すべてクリア(&A)★★★"
 Set myCBCtrl = Nothing
End Sub

右クリックしてもSUMが出ません。
どなたかご教示お願いします。

質問者からの補足コメント

  • うーん・・・

    出来ました。
    ですが、ヴァージョンが2013でやると出来ません。
    メニューにも出て来ません。
    マクロは有効にしています。
    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/12/18 11:59
  • うーん・・・

    この回答いただく前に先程の編集でモジュールを出してF5で一旦実行するとその後メニューにも出ますしSUMも実行出来ます。
    合計のマクロを書き替えたら、上のものにしたら駄目でした。

    それからマクロを書いたファイルを開かないとマクロが使えないというのもどうにか
    なりそうなのですが、宜しくお願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/12/18 12:40
  • うーん・・・

    ★補足最新★
    ごちゃごちゃになってしまいましたので、まとめます。
    どうも、動いたり動かなかったりと不安定です。
    BVモジュール画面を出してF5で実行しないと動かないみたいです。
    でも動いたり動かなかったりと、何か不安定で良くわかりません。

    式はWindFallerさんのものでやってます。

    どうぞよろしくお願いします。

      補足日時:2015/12/18 15:21
  • うーん・・・

    ★補足最新2★
    色々やっていて気がついたのですが、画像のように RightMenuAdding が上の枠の中に入っていると動くのですが、myAuto_Sum が上の枠の中に来ていると駄目みたいです。
    それで、モジュールの画面で RightMenuAdding で上書きしてもどうやってもマクロボックス画面
    で上に来ています。

    RightMenuAddingでメニューに挿入してmyAuto_SumでSUMの式を表示させてるのですね。
    うーん何とかならないでしょうか?

      補足日時:2015/12/18 15:44

A 回答 (4件)

No.1(No.3)の回答者です。


個人用マクロブック[ PERSONAL.XLSB ]がないのですね。
一番簡単なのは、[マクロの記録]にて[保存先]を[個人用マクロブック]に
すれば、新規に作成されます。
http://www.excel-vba.net/excel-macro-005.html

作成後は、ここの標準モジュールに記録すれば利用できます。
No.1のマクロをすべて同じモジュールに記録すれば利用できます。

Excelが起動したときに自動実行するなら、以下のAuto_Openマクロを追加
して、Excelを再起動してください。
(終了時に保存の確認がされますので、保存をしておいてください)

Sub Auto_open()

 Call AddMenu

End Sub
Call AddMenuで、同じモジュールにあるマクロ名を呼び出しますから、
右クリックに起動時から表示されます。
    • good
    • 0
この回答へのお礼

enunokokoroさん
出来ました。
個人用マクロブックについては2007では知り合いの専門家に聞いても出来ないと言われてたのですがこんな方法でするんだったんですね。
大変大変ありがとうございました。
又何かありましたらお願いしますね。
では、失礼します。

お礼日時:2015/12/18 16:27

Excelのバージョンは2007以降ですか?


マクロ名「合計」を直接実行して時にもエラーが出るのですか?
エラーとは関係ないかもしれませんが、マクロの保存先はどこですか?

マクロ名「AddMenu」はセルの右クリックメニューに登録する方法です。
このマクロでは問題なく実行され登録できているようなので、マクロ名の
「合計」だけが実行できないようです。

ですからExcelのバージョンが2003以前なのかもしれないと思いました。
(No.2で紹介した3番目のサイト先にOffice2007以降と書いてある)
この場合だと、ExecuteMsoメソッドが使えないので、記入間違いとしての
エラーが表示されたのかもしれませんね。
(私の現在の環境がExcel2013なので、問題なく実行できます)

「合計」のマクロを以下のように書き換えて実行してみてください。

Sub 合計()

Dim ctr
Set ctr = CommandBars.FindControl(ID:=226)
ctr.Execute

End Sub

これでオートSUMが働いてくれればよいのですが。
(私の環境ではオートSUMのID:=226が動かないので、未検証)
https://www.moug.net/tech/exvba/0150053.html

ちなみに質問にあるマクロが紹介されているサイトはこちら↓ですね。
http://park11.wakwak.com/~miko/Excel_Note/18-01_ …
ここで紹介されている「書式のクリア」でのID:=1964の場合は、私の環境
でもで実行できます。
(新しくリボンで変更されたものが FindControl で動かないことも?)
この回答への補足あり
    • good
    • 0
この回答へのお礼

すみません、NO.1さんですね、混同してました。
Sub 合計()
Dim ctr
Set ctr = CommandBars.FindControl(ID:=226)
ctr.Execute
End Sub

これにすると ctr.Execute に黄色の帯がかかって出来ないですね。

今のところ、NO.2さんのは2007では出来ますが2013で出来ません。
一度F5で実行させると出来るのですが。

それからマクロの保存先でPERSONAL.XLSは2007ではないのですが、
2013ではありますか?
保存先で個人用マクロブックが見当たらないですが?

よろしくお願いします。

お礼日時:2015/12/18 13:25

こんにちは。



少し、お邪魔します。
回答そのものは、#1さんのもので間違いないし、ベストアンサーは、#1の方でよいのですが、独立させずに、元のコードに一緒に入れたらよかったと思います。

最近、個人用マクロブック(PERSONAL.XLSB)のAuto_Open() の質問がありましたが、これも、その中に入る代表的なコードです。

#1のお礼欄のエラーは、そのマクロの置き場所の問題です。
ふつうは、全部をセットにして、標準モジュールに置きます。(他にも、ThisWorkbookモジュールに置く方法もありますが、どうしたらよいかすぐに分からない人はしないほうがよいです。)

何年ぶりかのメニュー変更のマクロですので、過去の自分の記録から引用してきました。
'//
Sub RightMenuAdding()  ''Auto_Open()
  With Application.CommandBars("Cell")
    .Reset '①カスタマイズしていなければ、これを入れるお約束
    With .Controls.Add(Type:=msoControlButton, _
      ID:=370, Before:=4, Temporary:=True)
      .Caption = "値の貼り付け★"
    End With
    With .Controls.Add(Type:=msoControlButton, _
      ID:=872, Before:=9, Temporary:=True)
      .Caption = "書式のクリア★"
    End With
    With .Controls.Add(Type:=msoControlButton, _
      ID:=1964, Before:=10, Temporary:=True)
      .Caption = "すべてクリア★"
    End With
    '/加入②
    With .Controls.Add(Type:=msoControlButton, _
      Before:=11, Temporary:=True)
      .Caption = "オート_Sum★"
      .OnAction = "myAuto_Sum"
    End With
  End With
End Sub
Sub myAuto_Sum() '③
  Application.CommandBars.ExecuteMso ("AutoSum")
End Sub
'///

①は、二重設定になる恐れがあるので、これは必ず入れてください。
他の方法もありますが、カスタマイズしている場合は、このように個別に削除しますが、かならず、On Error Resume Next を入れるという慣習があります。

   With Application.CommandBars("CELL")
      .Reset
      On Error Resume Next
      .Controls("値の貼り付け★").Delete
      .Controls("書式のクリア★").Delete
      .Controls("すべてクリア★").Delete
      .Controls("オート_Sum★").Delete
      On Error GoTo 0
  End With
  
②は、なぜ、直接呼び出せないのか、おそらくボタンの型の種類か何かだと思います。(ID:=226)でボタンは呼び出せますが、その後が分かりませんでした。

③は、言うまでもなく、元の本体とは離さないほうがよいでしょうし、基本的には、標準モジュールです。

p.s. なんとなく、最近は見られなくなったコードですね。VBAエキスパート試験でもなくなったと思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
マクロは標準モジュールに入れています。
やはり、エラーが、
今度はマクロ "D:\Book2’合計’を実行できません。このブックでマクロが使用出来ないか・・・。となりますが、
他のマクロは動いてます。

ちなみにマクロ ステップインをすると
Sub myAuto_Sum() '③ ←この部分に黄色の帯がかかっています。

マクロ 編集 F5を実行すると
セルに =SUM() が表示、つまり∑オートsumのアイコンを押した状態になります。
つまり、マクロは動いているのだと思いますが。

何とかならないものでしょうか?
よろしくお願いします。

お礼日時:2015/12/18 11:46

こういう方法もあるようです。



Sub AddMenu()
 Dim Newb
 Application.CommandBars("Cell").Reset
 Set Newb = Application.CommandBars("Cell").Controls.Add(Before:=1)
  With Newb
   .Caption = "オートSUM ★★"
   .OnAction = "合計"
   .BeginGroup = False
  End With
End Sub

Sub 合計()
 Application.CommandBars.ExecuteMso "AutoSum"
End Sub

Sub DelMenu()
 Application.CommandBars("Cell").Controls("オートSUM ★★").Delete
End Sub

http://officetanaka.net/excel/vba/tips/tips30.htm
http://www.atmarkit.co.jp/ait/articles/1408/25/n …
http://www.ka-net.org/blog/?p=4438
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
右クリックのメニューの一番上にはオートSUMが出ますが、実行すると
’book2.htm’が見つかりません。ファイル名およびファイルの保存場所が正しいかどうかを確認してください。
と出ます。
どうぞよろしくお願いします。

お礼日時:2015/12/18 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!