- 締切済み
EXCEL VBA でマクロが作動するシートとしないシートがある。
右クリックのショートカットメニューに作成したマクロを追加しました。その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。同じbookでもその他のシートでは、右クリックのショートカットメニューに追加されているものもあります。 なぜでしょうか? できないのは、右クリックのショートカットの表示です。目的の動作(下記の場合は、フォントの色を変える)は、どのシートでも作動します。 ちなみにプロシージャーは次のように書いています。PERSONAL.XLSに登録してあります。 宜しくお願いします。 'セルの右クリックショートカットメニューを作成 Sub 色々右クリック() 赤みぎクリック 黒みぎクリック 青みぎクリック End Sub Sub 赤みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "赤" .OnAction = "赤フォント" .BeginGroup = False End With End Sub Sub 赤フォント() Selection.Font.ColorIndex = 3 End Sub Sub 黒みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "黒" .OnAction = "黒フォント" .BeginGroup = False End With End Sub Sub 黒フォント() Selection.Font.ColorIndex = 1 End Sub Sub 青みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "青" .OnAction = "青フォント" .BeginGroup = False End With End Sub Sub 青フォント() Selection.Font.ColorIndex = 5 End Sub Sub Reset_RightClick() Dim rightBar As CommandBar Application.CommandBars("cell").Reset End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sykt1217
- ベストアンサー率34% (277/798)
うーん・・・・ ブックの保護などをかけてるなんてことはないですよね? もしくはある母体に対するショートカットなはずなのに、母体との互換性がもててない、または整合性がとれてない(この場合、ショートカット作成時に、既に母体ファイルとショートカットで整合性がとれていないものと思われます。)なんてことはないですよね?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。 意味が良く分からないです。 PERSONAL.XLS に登録したら、PERSONAL.XLS の標準モジュールのAuto_Open か、ThisWorkbook モジュールの ThisWorkbook_Open に、右クリックメニューを登録マクロを入れますから、追加されないシートという現象があるとは思えないのです。 >できないのは、右クリックのショートカットの表示です。 これに関しては、分かりません。シートに特別なイベントを登録しているぐらいしか思えません。今回の問題とは関係ないかもしれませんが、コードとしては、もう少し丁寧に作ったほうがよいかなって思います。 メニューリセット・マクロは置いていません。何度繰り返しても、ひとつずつしか、コントロールボタン・メニューは置かれません。 '-------------------------------- Sub Auto_Open Call RightClickMenuAdding End Sub '-------------------------------- Sub RightClickMenuAdding() '右クリックメニュー登録 With Application.CommandBars("CELL") On Error Resume Next .Controls("赤みぎクリック").Delete .Controls("黒みぎクリック").Delete .Controls("青みぎクリック").Delete On Error GoTo 0 With .Controls.add _ (Type:=msoControlButton, Before:=1, Temporary:=True) .BeginGroup = False .Caption = "赤" .OnAction = "赤フォント" End With With .Controls.add _ (Type:=msoControlButton, Before:=2, Temporary:=True) .BeginGroup = False .Caption = "黒" .OnAction = "黒フォント" End With With .Controls.add _ (Type:=msoControlButton, Before:=3, Temporary:=True) .BeginGroup = False .Caption = "青" .OnAction = "青フォント" End With End With End Sub Sub 赤フォント() If TypeName(Selection) = "Range" Then If WorksheetFunction.CountA(Selection) Then Selection.Font.ColorIndex = 3 End If End If End Sub Sub 黒フォント() If TypeName(Selection) = "Range" Then If WorksheetFunction.CountA(Selection) Then Selection.Font.ColorIndex = 1 End If End If End Sub Sub 青フォント() If TypeName(Selection) = "Range" Then If WorksheetFunction.CountA(Selection) Then Selection.Font.ColorIndex = 5 End If End If End Sub
- sykt1217
- ベストアンサー率34% (277/798)
とりあえずプロシージャ名や変数名で二バイト文字を使わないようにして下さい。 あと変数の宣言ですが、型も書いて試してみてください。 それでもできなかったら補足お願いします。
補足
回答いただきありがとうございました。 プロシージャ名を半角の英字にして、変数の型はVarialntで宣言しました。 それでも同じ結果です。 新規作成ファイルでも、右クリックで目的のショートカットが表示されますので、シートも問題があるのかも知れません。 この右クリックにショートカットが追加できないシートは、他のマクロの対象シートで、そこに別のシートからデータを書き込むようになっています。このマクロは、PERSONAL.XLSではなく、問題になっているシートがあるBOOKに登録してあります。