アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルにて、コピー貼付を禁止するマクロを、教えてGooの過去のQ&Aから、参照させていただきました。

'---------------------------------------------------------------
Sub DisableCommandButtons(Cmd_bln As Boolean)
'コピー・貼り付けを停止させるサブルーチン・マクロ
 Dim cmd As Variant
 Dim Cmdb As Object
 Dim CmdNames As Variant
 CmdNames = Array("Worksheet Menu Bar", "Cell", "Column", "Row")
 'ショートカットのインスタンス
 If Cmd_bln = False Then
  Application.OnKey "^c", ""
  Application.OnKey "^v", ""
  Application.OnKey "^x", ""
 Else
  Application.OnKey "^c"
  Application.OnKey "^v"
  Application.OnKey "^x"
 End If
 'コマンドボタンのEnable
 For Each cmd In CmdNames
 If cmd = "Worksheet Menu Bar" Then
  With Application.CommandBars(cmd).Controls(2)
   .Controls(3).Enabled = Cmd_bln
   .Controls(4).Enabled = Cmd_bln
   .Controls(5).Enabled = Cmd_bln
  End With
 Else
  With Application.CommandBars(cmd)
   .FindControl(, 19).Enabled = Cmd_bln 'Copy
   .FindControl(, 22).Enabled = Cmd_bln 'Paste
   .FindControl(, 21).Enabled = Cmd_bln 'Cut
  End With
 End If
 Next cmd

End Sub
'---------------------------------------------------------------

このマクロを実行した所、コンテキストメニュー及びショートカットキーのコピー、貼付が無効になりました。
しかし、マクロを有効にしたエクセルファイルを閉じても、他のエクセルファイルもコピー、貼付が無効になってしまいました。
コピー、貼付を有効にするためのマクロを動かさないとダメなのか?と思い、色々試してみたのですが、うまくいきません。

EnableCommandButtons というマクロを別に作り
ショートカットのインスタンスの
 If Cmd_bln = False Then を
 If Cmd_bln = True Then に
書き換えて、実行した所、ショートカットキーは有効になったのですが
コンテキストメニューのコピー、貼付を有効にするやり方がわかりません。

どなたか、助けていただけないでしょうか?
よろしくお願い致します。

A 回答 (3件)

連投すみません。


下記コードを掲載されたマクロコードの変数宣言の次に入れて実行してみてください。

Cmd_bln = True
    • good
    • 0
この回答へのお礼

この方法で、コンテキストメニューのコピー、貼付けが有効になりました。
意味も分からず、マクロを導入するものではないと、思いました。
助かりました、ありがとうございます。

お礼日時:2008/08/24 11:04

3連投すみません。



引数付きSubプロシージャに初めて出会いました。
当初、Cmd_bln のTrue、Falseの切り替えがどうなっているのか解りませんでした。
マクロの実行方法を試していて、下記のように引数を与えて呼び出せばよいことが分かりました。
試してみてください。

Sub test2()
  DisableCommandButtons True
End Sub
    • good
    • 0

取りあえず下記マクロを実行してみてください。


コンテキストメニューが復活しないでしょうか。

Sub test()
  Excel.Application.CommandBars("cell").Enabled = True
  Excel.Application.CommandBars("Row").Enabled = True
  Excel.Application.CommandBars("Column").Enabled = True
End Sub
    • good
    • 0

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