• 締切済み

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

みんなの回答

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.3

うーん・・・・ ブックの保護などをかけてるなんてことはないですよね? もしくはある母体に対するショートカットなはずなのに、母体との互換性がもててない、または整合性がとれてない(この場合、ショートカット作成時に、既に母体ファイルとショートカットで整合性がとれていないものと思われます。)なんてことはないですよね?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。 意味が良く分からないです。 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)
回答No.1

とりあえずプロシージャ名や変数名で二バイト文字を使わないようにして下さい。 あと変数の宣言ですが、型も書いて試してみてください。 それでもできなかったら補足お願いします。

sasakimari
質問者

補足

回答いただきありがとうございました。 プロシージャ名を半角の英字にして、変数の型はVarialntで宣言しました。 それでも同じ結果です。 新規作成ファイルでも、右クリックで目的のショートカットが表示されますので、シートも問題があるのかも知れません。 この右クリックにショートカットが追加できないシートは、他のマクロの対象シートで、そこに別のシートからデータを書き込むようになっています。このマクロは、PERSONAL.XLSではなく、問題になっているシートがあるBOOKに登録してあります。

関連するQ&A