家・車以外で、人生で一番奮発した買い物

いつもお世話になっております。
さて、マクロの記録で最初にショートカットキーに”Z”を振り当てて黄色くしたのが下記のコードなのですが、Ctrl+Zで実行するとシート全体が削除されてしまいます。

ところが、VBAの編集画面でF8で1行づつ実行するとちゃんと動くのですが、何故かショートカットキーからの実行だと何度やってもシート全体が削除されてしまいます。

やりたいことは、最初に無駄な列を削除して残った列で合計、小計を表示させたいのです。
最初に無駄な列を削除する時に、ショートカットキーで実行すると全部の列が削除されるような感じです。

原因と対策をご教示お願いします。


Sub 処理1()
'
処理1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+Z
'
Range("A:P,S:T,V:V,X:AP").Select

Selection.Delete Shift:=xlToLeft
Selection.End(xlToLeft).Select

ActiveWindow.ScrollColumn = 1
Rows("1:4").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C3").Select
ActiveCell.FormulaR1C1 = "合計"
ActiveCell.Characters(1, 2).PhoneticCharacters = "ゴウケイ"
Range("C4").Select
ActiveCell.FormulaR1C1 = "1万円以上"
・・・・・・・・・・

End Sub

A 回答 (3件)

>出来たらCtrl+Zで期待通り動くようにしたいのですが。


出来ない事は無いと思いますが・・・OnKeyを使うとか

Ctrl+Zはマクロの実行より使うケースが多くないですか?
Ctrl+Zは元に戻す時によく使うショートカットキーだと思います

強引に割り当てますか?止めておく方が良いと思いますよ。。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
このために追加のご回答まですみません。

>Ctrl+Zは元に戻す時によく使うショートカットキーだと思います
知りませんでした。
使ったことが無く、大昔に「ショートカットキ」という機能を知った時に初めて割り当てたのがC+Zだったので・・・

アドバイス通りにやめておきます。

お礼日時:2022/07/14 08:33

何かの機会に(他のキーで)同様の事をやりたいかもしれませんので


簡単な方法を示しておきます
Ctrl+zは有用なキーなので出来るだけ実行範囲を少なくして考えました

コードを拝見する限り、特定のシートで実行するもの?かと思いますので

実行する シートモジュールに
Private Sub Worksheet_Activate()
Call zKey_onMacro
End Sub
Private Sub Worksheet_Deactivate()
Call zKey_offMacro
End Sub

標準モジュールに
Sub 処理1()
Range("A:P,S:T,V:V,X:AP").Select
Selection.Delete Shift:=xlToLeft
Selection.End(xlToLeft).Select
ActiveWindow.ScrollColumn = 1
Rows("1:4").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C3").Select
ActiveCell.FormulaR1C1 = "合計"
ActiveCell.Characters(1, 2).PhoneticCharacters = "ゴウケイ"
Range("C4").Select
ActiveCell.FormulaR1C1 = "1万円以上"
・・・・・・・・・・
End Sub

Sub zKey_onMacro()
Application.MacroOptions Macro:="処理1", ShortcutKey:="z"
End Sub

Sub zKey_offMacro()
Application.MacroOptions Macro:="処理1", ShortcutKey:=""
End Sub

対象のシートをアクティブにした場合にCtrl+zで実行できると思います
通常の戻るショートカットキーは使えない
他のシートに移れば戻るショートカットキーは使えます

他のシートでも実行したい場合は 
Private Sub Worksheet_Deactivate() を削除してください

Application.OnKey "^z", "処理1" のようなやり方もありますが、
機能を戻す方法を(ブックを再起動以外)知りません
    • good
    • 0
この回答へのお礼

非常に丁寧な追加のご回答で心苦しく。。。
当方の無知ゆえにお手数をお掛けし申し訳ありませんでした。

Ctrl+Sift+Zで対応することに致します。
慣れの問題なので経時で慣れてしまうと思いますので特殊な細工は辞めます。

お礼日時:2022/07/14 08:47

こんにちは


>Ctrl+Zで実行する
Ctrl+Shift+Zになっていますが・・・ 書き間違えだけ?
    • good
    • 0
この回答へのお礼

これはマクロの記録の設定画面の枠で”Z"を指定すると
Ctrl+Shift+Z
と記録されるのですが、前回は同じ方法Ctrl+Zで問題なく動かせたので気づきませんでした。

改めてCtrl+Shift+Zやってみたら予定通りに動きました。
最初にNETで調べた時にもCtrl+Shift+ZとあったのでSiftを削除して実行したらシート全部が空白になってしまいました。

出来たらCtrl+Zで期待通り動くようにしたいのですが。
これまで左手だけでC+Zで使っていたのと、この3つのキーは同時に押しにくいので。

お礼日時:2022/07/13 15:02

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


おすすめ情報