Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

動作検証バージョン:Windows版Excel(バージョン1901 ビルド11231.20130)

入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

「vba セルの入力チェック」
「EXCEL マクロ 未入力チェック」
といった検索キーワードで、時折アクセスがあります。

セルの入力チェックをVBAから行う方法を探していた方による検索です。

入力チェックを行うタイミングを制御する方法として、Worksheet_Deactivateイベントプロシージャをご紹介します。

入力チェックを行うタイミング

例えば、あるシートのA1セルに必ず何らかのデータを入力する必要があるときに、チェックを行うタイミングはいくつか考えられます。

大きな分類としては、
・ヒトが任意のタイミングでマクロを実行してチェックする
・自動的にチェック処理を実行する
の2つが考えられます。

この記事では、自動的にチェック処理を実行する方法を見ますが、どのタイミングで実行するかを決めなければなりません。

[スポンサードリンク]

いくつかのタイミングが考えられますが、別のシートが選択されたとき、該当シートがアクティブでなくなるとき、というのが悪くない選択肢だと思います。

入力チェックを行う処理Worksheet_Deactivateイベントプロシージャ

以下のようなWorksheet_Deactivateイベントプロシージャを、シートモジュールに作成しておくと、このシートがアクティブでなくなるときに、A1セルが未入力でないかがチェックされ、未入力ならA1セルが選択され、メッセージが表示されます。
Private Sub Worksheet_Deactivate()
 If Me.Range("A1").Value = "" Then
  Me.Select
  Range("A1").Select
  MsgBox Me.Name & "シートのA1セルには必ずデータを入力してください。"
 End If
End Sub

例えば、プロジェクトエクスプローラーで「Sheet1(Sheet1)」をダブルクリックして表示された、Sheet1シートモジュールに、

入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

下図のように、上記のイベントプロシージャをコピペしてみてください。

入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

すると、Sheet1シートがアクティブでなくなるときに、A1セルにデータが入力されていなければ、
「Sheet1シートのA1セルには必ずデータを入力してください。」
とメッセージが表示されます。

Worksheet_Deactivateイベントプロシージャで行っている処理

イベントプロシージャは、該当するイベントが発生したときに、自動的に実行されるプロシージャです。

上記のプロシージャの場合、Sheet1シートモジュールに書かれているので、Sheet1シートがアクティブでなくなったときに、
  Private Sub Worksheet_Deactivate()

Sheet1シートのA1セルの値がチェックされます。
  If Me.Range("A1").Value = "" Then

ここで登場するMeキーワードは、Sheet1シートモジュールに書かれているときはSheet1シート自体を表します。

Sheet1シートのA1セルにデータが入力されていないときに、Sheet1シートが選択されてから、
  Me.Select

A1セルが選択され、
  Range("A1").Select

メッセージが表示されます。
  MsgBox Me.Name & "シートのA1セルには必ずデータを入力してください。"

最終更新日時:2019-02-09 12:44

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » 入力チェックを行う-Worksheet_Deactivateイベントプロシージャ

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.