Excelで業務用のファイルを扱っているときに、
「このファイル、閉じる前にデータをちゃんと確認したい…」
というケースは少なくありません。
特に、特定のセルの内容に間違いがないかをチェックしたいとき、閉じる瞬間に確認メッセージを出せたら安心ですよね。
今回は、Excel VBAの「Workbook_BeforeClose」イベントを使って、ファイルを閉じる前にセルA1とセルB1の文字列を比較する方法をご紹介いたします。
できること
本記事で紹介するマクロでは、以下の処理が自動で実行されます。
- Excelファイルを閉じようとしたタイミングで
- シート「Sheet1」のA1セルの値が、B1セルの値に含まれているかをチェック
- 含まれていなければ、確認メッセージを表示
- 「いいえ」を選択すれば、ファイルのクローズをキャンセル
実装方法:ThisWorkbookに記述する
この処理はファイルの終了イベントに対して動作するマクロです。
「ThisWorkbook」モジュールに以下のコードを記入してください。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim a1 As String
Dim b1 As String
Dim response As VbMsgBoxResult
' シート名は実際のものに合わせて変更してください
With ThisWorkbook.Worksheets("Sheet1")
a1 = .Cells(1, 1).Value ' A1セル
b1 = .Cells(1, 2).Value ' B1セル
End With
' A1の値がB1に含まれているかをチェック
If InStr(b1, a1) > 0 Then
' 含まれていればそのまま終了(何もしない)
Else
response = MsgBox("A1の値がB1に含まれていません。本当にファイルを閉じますか?", _
vbExclamation + vbYesNo, "確認")
If response = vbNo Then
Cancel = True ' 閉じるのをキャンセル
End If
End If
End Sub
処理の概要
Workbook_BeforeClose
イベントは、ファイルが閉じられる直前に自動的に実行されますInStr(対象文字列, 調べたい文字列)
関数を使って、A1の値がB1に含まれているかどうかを判定しますCancel = True
にすることで、閉じる処理をキャンセル可能
注意点と補足
- 比較対象のセル(A1、B1)は必要に応じて変更してください
- 空白や全角・半角の違いでも一致しない場合があります。正確な一致が必要な場合は
=
演算子を使用してください - ファイルを保存せずに閉じたい場合にも注意が必要です。必要に応じて保存確認処理を追加すると安心です
応用例
- フォームのチェック漏れを防止
- ファイル名と文書内容の一致確認
- ユーザーが操作ミスで内容を消してしまった場合の保険として
まとめ
Excel VBAの Workbook_BeforeClose
イベントを使えば、ファイルを閉じる前に任意のチェック処理を組み込むことができます。
本記事では以下の流れで構成しました。
- A1とB1の値を取得し
- A1の文字列がB1に含まれているかを判定
- 含まれていなければ警告を出し、ファイルのクローズをキャンセル
こうした処理は、人為的なミスを未然に防ぐための自動チェックとして非常に有効です。
日々の業務効率化にぜひご活用ください。
スクールの紹介
【アイデミー】AIを学んで一発逆転のキャリアチェンジ!
最後に宣伝をさせてください。
夢見るAIエンジニアへ、今こそ一歩を踏み出せ!
最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。
しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!
なぜこのサービスが選ばれるのか?その理由はこちら
- 初心者から上級者まで
完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。 - 徹底的な進捗管理
受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。 - 専属メンターによる徹底サポート
AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。 - 場所を選ばず学べるオンライン完結
東京以外の地域からも、気軽に学び始めることができます。
信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現
夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!