質問: False Then Debug.Print "False" Else Debug.Print "True" End If End Sub ``` `
回答: サンプルを拝見しました・・。 素人考えですが Application.EnableEvents = Falseなどはメゾットなので if thenで判定できないのではないでしょうか・・・。 その証拠にif elseでmsgbox(debug.printも反応しない)を入れて判定しても反応しないためです。 そもそも特定のセルのchangイベントを判定してF1の色分けをおこなっているのですから イベント自体をON・OFFする意味がわかりませんが・・。 また、各イベントは、通常処理で影響しないようにTrueにして戻して終わるのがセオリーのような気がします。 (処理高速化でOFFにする場合もありますが、特定のセルのイベントを制御する処理ではあまり意味がないようなきがします) 下記のようなコードを実行前後に入れることはよくあります。 Sub マクロ開始() Application.ScreenUpdating = False '画面描画を停止 Application.EnableEvents = False 'イベントを抑止 Application.DisplayAlerts = False '確認メッセージを抑止 Application.Calculation = xlCalculationManual '計算を手動に End Sub Sub マクロ終了() Application.StatusBar = False 'ステータスバーを消す Application.Calculation = xlCalculationAutomatic '計算を自動に Application.DisplayAlerts = True '確認メッセージを開始 Application.EnableEvents = True 'イベントを開始 Application.ScreenUpdating = True '画面描画を開始 End Sub