• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Worksheet_Changeについて)

Worksheet_Changeについて

このQ&Aのポイント
  • 特定のマクロの前後でWorkSheet_Changeを終了し再開させる方法がありましたらお願い致します。
  • Worksheet_Changeを使って特定の範囲の変更を監視し、条件に合致する場合は別のマクロを実行することができます。
  • ExcelのWorksheet_Changeイベントは、セルの変更があった時に自動的に発生するイベントであり、そのイベントハンドラ内で任意の処理を実行することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

パブリック変数に動作可否を持っておいたら? 例えば、 public Flag_WSChange as string Private Sub workbook_open ・・・ Flag_WSChange = "" end sub Private sub 止めたいサブルーチン Flag_WSChange = "STOP" ・・・ Flag_WSChange = "" end sub Private Sub WorkSheet_Change(ByVal Target As Range if Flag_WSChange = "STOP" then exit sub end if ・・・ end sub って感じ。 EXCELブック上の特定シート上にある特定セルの値でもいいですし。 ★止めたいサブルーチンでエラーが起きて続行しなかったときは、STOPになったままなので要注意。 (ON ERROR 処理でSTOPをはずすなり、手作業で変えるなりする必要があります)

Rord
質問者

お礼

ご回答有難うございます。確かにそういう方法もありますが、スマートなコード文(一部分)ではありませんが下記の方法で事なきを得ました。重ねがさねお礼申しあげます。 Private Sub WorkSheet_Change(ByVal Target As Range) Dim c As Range For Each c In Target Select Case c.address(0, 0) Case "C1" If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub '検査範囲 Application.EnableEvents = False '再帰実行の停止 If Range("C1").Value <> Sheets("祝祭日").Range("A1").Value Then MsgBox ("祝日の設定を反映するため年度を同じにしてください。") End If Application.EnableEvents = True Case Else Select Case c.address(0, 0) Case "G1" If Range("G1") = 4 Then '4月データの表示 Dim ret As Integer ret = MsgBox(Format(ActiveSheet.Range("G2").Value, "ge年mm月") & "の勤務割表の編集&入力保存データを元に表示します。" & vbCrLf & "よろしいですか?", _ vbOKCancel + vbQuestion, "勤務割表表示切替確認") Select Case ret Case vbOK UserForm8.Show vbModeless UserForm8.Repaint 当月データのクリア Sheets("編集").Select Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Sheets("編集").Range("G1").Select ActiveCell.FormulaR1C1 = "4" 編集データの復元4月 Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.Cursor = xlDefault Application.EnableEvents = True メインデータの復元4月 Sheets("メイン・1").Select Unload UserForm8 CommandButton4_Click Case vbOKCancel Exit Sub End Select