
DELETEキーを拾うため、SheetのOpenイベントに
Application.onkeyにて"DELETE"キーと呼び出し関数を
指定しています。
標準モジュールにて、呼び出し先関数を定義して
普通に処理出来ているのですが・・・・・
まったく関係の無いほかのエクセルファイルを開き
DELETEキーを押下しても、同じ関数が呼び出されて
しまいます。
(同じExcel.exeのMDIの一つとして起動されてしまった場合)
困った事に、シートのある特定の状態を見ている為
現状エラーメッセージボックスが表示されてしまいます。
回避方法は幾らでもあるのですが。
Googleで検索しても、OnError で処理していたり
まったく何も考えてなかったり。
具体的な対応策が見つかりません。
現状シート名にて判断しようと考えておりますが
かなりの数がある&シート名に制約が生まれる
のでやりたくないんです。
何か一般的な回避策がありましたら教えて頂け
無いでしょうか。
No.1ベストアンサー
- 回答日時:
先ほど回答を投稿したのですが反映されてないので、再投稿。
ThisWorkbookモジュールに全て(OnKeyで実行のマクロ以外)のコードを置いて。。
( Sheet2 でのみで動作させる場合)
'------------------------------------------------
Private Sub Workbook_Activate()
If ActiveSheet.Name = "Sheet2" Then
Sheets("Sheet2じゃないシート").Activate
Sheets("Sheet2").Activate
End If
End Sub
'-----------------------------------------------
Private Sub Workbook_Deactivate()
'▲OnKey解除▲
End Sub
'-----------------------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet2" Then
'●OnKey セット●
End If
End Sub
'---------------------------------------------
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Sheet2" Then
'▲OnKey解除▲
End If
End Sub
'-------------------------------------------------
外しましたらご容赦!
ご返答有難う御座います。
シートのActive、DeActiveを拾ってOnKeyの設定を
行わないと、新たなシートでDELキーが有効になりません
でした。
下記のように対応しました。
-------------------------------------------------
'ThisWorkBook
Private Sub Workbook_Activate()
●OnKey セット●
End Sub
Private Sub Workbook_Deactivate()
●OnKey 解除●
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
●OnKey 解除●
End Sub
'標準モジュール
Sub DELキーイベント関数()
If ActiveWorkbook Is ThisWorkbook Then
DELETE処理・・・・・
End If
End Sub
-------------------------------------------------
上記対応により、問題なく処理する事が出来ました。
大変有難う御座いました。
No.2
- 回答日時:
こんにちは。
> SheetのOpenイベント
> 現状シート名にて判断しようと考えておりますが
Sheet には Open イベントはありません。Workbook_Open のことかな?
下記は、とりあえず Auto_Open にしましたが、ご都合で読み替えて下さい。
Sub Auto_Open()
Application.OnKey "{DELETE}", ThisWorkbook.Name & "!SampleProc"
End Sub
Sub Auto_Close()
Application.OnKey "{DELETE}"
End Sub
' // 標準モジュール
Sub SampleProc()
If ActiveWorkbook Is ThisWorkbook Then
MsgBox "コールされました"
End If
End Sub
> OnError で処理していたり
> まったく何も考えてなかったり。
> 具体的な対応策が見つかりません。
どのような時に、どのようなエラーが発生するかを理解した上で施す、
最小限の On Error トラップは有効な方法だと思います。
これが、具体的ではないとするのであれば、どのような方法を望んでいる
のかもっと説明した方が良いのでは?
早速のご返答有難う御座います。
記載内容の不備、申し訳御座いません。
当方がExcelVBAをわかっていない状況で
質問させて頂きました。実際の担当は、当方の部下が行って
おり、ヒアリングにて記載させて頂きました。
当方が聞きたかった事は、KenKen_SPさんの記載通りの内容
となります。
大変参考となりました、有難うございます。
ただ、この対応ですと、関係の無いエクセルファイル上での
DELキーが無効となってしまいました。
次にご返答いただいているonlyromさんと合わせた形で対応
が必要になりそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表の中を『年』で検索し、値を得たい。 4 2023/01/31 22:37
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Visual Basic(VBA) Excel VBA 複数ブックシートごとにデータを統合する方法について 4 2022/05/20 14:23
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Codeがわかりません(自作の...
-
VBAで以下の処理をする方法があ...
-
Excel VBA 指定シートの有無確認
-
エクセル Worksheet_Calculate
-
エクセルのマクロについて教え...
-
エクセルのVBAの変更点がわ...
-
作ったマクロに不備があるかど...
-
【エクセル】オプションボタン...
-
【VBA】全ての複数シートから指...
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
IFステートの中にWithステート...
-
Excel チェックボックスにチェ...
-
VBA 存在しないシートを選...
-
【VBA】色のついたシート名を取得
-
シートの枚数について
-
エクセルVBAのIF文のときのFOR...
-
VBA|楕円のリンクについて
-
Excel VBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報