Excelで入力必須の項目を定義し、保存時やファイルを閉じる際にエラー表示する方法
Web2017年10月25日
必須入力のセルに対して未入力であればアラートを表示する、という機能をExcelで作りました。備忘録も兼ねて、本記事で作り方をご紹介させていただきたいと思います。
機能実装手順
- 入力セルに名前を定義
- ThisWorkbookを開き、コードを記述
- マクロ有効ブック(*.xlsm)で保存
- エラー機能を確認
①入力セルに名前を定義
まず、必須入力チェックを行いたいセルにカーソルを合わせて、右クリックから[名前を定義]をクリックします。
表示されたダイアログに、任意の名前を設定します。ここでは「【必須テスト】」としました。
- ※ここで定義した名前は、後程記述するVBAで使用します
②VBE(Visual Basic Editor)を起動し、コードを記述
Alt + F11でVBE(Visual Basic Editor)を起動します。続けて、「ThisWorkbook」に以下のコードを記述します。
- ※ここでは「ファイルを閉じる際」にアラートを表示するようにしてみたいと思います
Private Sub Workbook_BeforeClose(Cancel As Boolean)
flag = 0
For Each cell1 In ActiveSheet.Range("【必須】test")
If cell1.Value = "" Then
MsgBox "【テスト】未入力です!"
flag = 1
End If
Next
If flag = 1 Then
Cancel = True
End If
End Sub
③マクロ有効ブック(*.xlsm)で保存
ファイルを保存しようとすると、以下のダイアログが表示されます。[いいえ]をクリックします。
- ※マクロ有効ブック(*.xlsm)で保存しないと先ほどのコードは失われてしまいます
[Excel マクロ有効ブック(*.xlsm)]をプルダウンから選択し、保存します。
④エラー機能を確認
実際にセルを未入力の状態でファイルを閉じようとしてみましょう。下図のようにエラーが表示されればOKです。
ファイル保存前や保存後でのアラート表示も可能
コードの1行目を以下のようにすることで、ファイルの保存前や保存後にアラートを表示するようにすることも可能です。
ファイル保存前
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ファイル保存後
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
まとめ
複数人が同じフォーマットのExcelを提出するケースなどにおいて、機械的にアラートを出すことで入力ミスを減らすことができます。Excelはあんまり得意じゃないのですが、オフィスワークの1つのスキルとして覚えておいて損はないと思います。