![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ググッテみると下記を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が出ません。
どなたかご教示お願いします。
No.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で、同じモジュールにあるマクロ名を呼び出しますから、
右クリックに起動時から表示されます。
enunokokoroさん
出来ました。
個人用マクロブックについては2007では知り合いの専門家に聞いても出来ないと言われてたのですがこんな方法でするんだったんですね。
大変大変ありがとうございました。
又何かありましたらお願いしますね。
では、失礼します。
No.3
- 回答日時:
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 で動かないことも?)
すみません、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ではありますか?
保存先で個人用マクロブックが見当たらないですが?
よろしくお願いします。
No.2
- 回答日時:
こんにちは。
少し、お邪魔します。
回答そのものは、#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エキスパート試験でもなくなったと思います。
早速の回答ありがとうございます。
マクロは標準モジュールに入れています。
やはり、エラーが、
今度はマクロ "D:\Book2’合計’を実行できません。このブックでマクロが使用出来ないか・・・。となりますが、
他のマクロは動いてます。
ちなみにマクロ ステップインをすると
Sub myAuto_Sum() '③ ←この部分に黄色の帯がかかっています。
マクロ 編集 F5を実行すると
セルに =SUM() が表示、つまり∑オートsumのアイコンを押した状態になります。
つまり、マクロは動いているのだと思いますが。
何とかならないものでしょうか?
よろしくお願いします。
No.1
- 回答日時:
こういう方法もあるようです。
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
回答ありがとうございます。
右クリックのメニューの一番上にはオートSUMが出ますが、実行すると
’book2.htm’が見つかりません。ファイル名およびファイルの保存場所が正しいかどうかを確認してください。
と出ます。
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) バックグラウンドのプロセスのエクセルを閉じる方法 4 2022/05/12 15:39
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Excel(エクセル) VBA 同日で2回目(午後)の体温を登録するときのコード 3 2022/08/28 20:29
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今日の日付の範囲を指定して印...
-
エクセルVBAで、ボタンの文字を...
-
エクセルのマクロボタンが編集...
-
Workbook_Openを起動時以外に呼...
-
Access終了時にマクロまたはVBA...
-
別シートのマクロを実行する方法
-
エクセルVBAで数式バー再表示後...
-
InputBox内の表示について
-
シート保護を掛けたまま並べ替...
-
Application.Runエラー(1004)
-
マクロで図形を一度に消去したい
-
アクセスのマクロについて
-
別シートのトグルボタンを指定...
-
プロシージャが大きすぎます!
-
Accessからエクセルマクロを起...
-
エクセル2003 リソース不足
-
特定マクロが実行されたか確認...
-
エクセル:保存するときに、標...
-
ACCESS エラーメッセージ表示...
-
特定のシートだけ印刷はマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのマクロボタンが編集...
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
Access終了時にマクロまたはVBA...
-
access2010 コマンドまたはアク...
-
シート保護を掛けたまま並べ替...
-
今日の日付の範囲を指定して印...
-
エクセルVBAで、ボタンの文字を...
-
InputBox内の表示について
-
エクセルのマクロ
-
マクロ 戻るボタンを押したらシ...
-
エクセル VBA SendKeys ループ...
-
private sub にしたらマクロが...
-
マクロとモジュールの違いを教...
-
マクロが登録できません
-
Workbook_Openを起動時以外に呼...
-
アクセスのマクロについて
-
プロシージャが大きすぎます!
-
特定のシートだけ印刷はマクロ...
-
アクセス:検索フォームボタンに...
おすすめ情報
出来ました。
ですが、ヴァージョンが2013でやると出来ません。
メニューにも出て来ません。
マクロは有効にしています。
よろしくお願いします。
この回答いただく前に先程の編集でモジュールを出してF5で一旦実行するとその後メニューにも出ますしSUMも実行出来ます。
合計のマクロを書き替えたら、上のものにしたら駄目でした。
それからマクロを書いたファイルを開かないとマクロが使えないというのもどうにか
なりそうなのですが、宜しくお願いします。
★補足最新★
ごちゃごちゃになってしまいましたので、まとめます。
どうも、動いたり動かなかったりと不安定です。
BVモジュール画面を出してF5で実行しないと動かないみたいです。
でも動いたり動かなかったりと、何か不安定で良くわかりません。
式はWindFallerさんのものでやってます。
どうぞよろしくお願いします。
★補足最新2★
色々やっていて気がついたのですが、画像のように RightMenuAdding が上の枠の中に入っていると動くのですが、myAuto_Sum が上の枠の中に来ていると駄目みたいです。
それで、モジュールの画面で RightMenuAdding で上書きしてもどうやってもマクロボックス画面
で上に来ています。
RightMenuAddingでメニューに挿入してmyAuto_SumでSUMの式を表示させてるのですね。
うーん何とかならないでしょうか?