changeイベントにExit Subをしようしたのですが、
Exit Subが実行されるとそれ以降changeイベントが動作しなくなってしまいました。
Exit Subを使用したいのは、changeイベントにおいて、行選択をしてdeleteキーを押してしまうと、オーバーフローが起こりExcelが閉じてしまうためです。
行を選択した状態で何かchangeイベントに該当するようなことがあったとき、Exit Subでchangeイベントを抜けるようにコードを書きました。
以下にサンプルコードを記載いたします。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 3Application.EnableEvents = False 4 5'行選択で操作が行われていた場合、changeイベントを抜ける。 6Dim selectAddress As String 7'選択範囲を相対参照で取得し、コロンを置き換える。 8selectAddress = Selection.Address(rowabsolute:=False, columnabsolute:=False) 9'行が選択されているなら数字とコロンだけ(例3:3)だからコロンを消せば数字だけになる。 10selectAddress = Replace(selectAddress, ":", "") 11 12'行を選択 = 数字だけならchangeイベントが終わり。 13If (IsNumeric(selectAddress)) Then 14 Exit Sub 15Else 16 Target.Value = "a" 17End If 18 19Application.EnableEvents = True 20 21End Sub
一度でもExit Subの処理が行われてしまうと、次からはセルを編集しても
VBA
1Else 2 Target.Value = "a"
の処理が起こらなくなります。
私自身でも試してみて、
Exit Subを記載せずにif文がtrueの時は何も記載しなければ、問題無く次回以降もchangeイベントが起動いたします。
もちろんExit Subを記載しなければ、マクロが動くという点では解決している話なのですが、
どうしてchangeイベントでExit Subの処理が起こると、次回以降changeイベントが機能しなくなるのか、教えていただけますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/13 13:07