【VBA】「あるある」な入力チェック方法

VBAで
 ・セルに設定された値を使用する
ことはよくあります!

セルに設定された値が不正だと困るため、
 ・VBAでメイン処理を開始する前に
 ・セルの入力チェックをする
ことは大切です!
※値が不正だと不要なエラーが発生してしまいます。

ここでは「あるある」な入力チェックとして
 ・入力必須チェック
 ・フォルダ存在チェック
 ・ファイル存在チェック
を紹介します!

PR

入力必須チェック

ここでは例として、
 ・シート「sample」のセル「B2」に
 ・値が設定されているか(=入力されているか)をチェック
します。

設定されていない(=入力されていない)場合は、処理を中断(=終了)します。

Sub sample()

    '入力必須チェック
    If Range("B2").Value = "" Then

        MsgBox "セルに「B2」に値が設定されていません。" & vbCrLf & vbCrLf & _
               "設定をお願いします。", _
               vbOKOnly + vbCritical, "入力必須エラー"
        Exit Sub

    End If
    
    'メイン処理
    '・
    '・
    '・
    '・
    
End Sub

「vbCrLf」でメッセージを改行させています(6行目)

エラーメッセージを示すアイコンを表示させるため、「MsgBox関数」の引数に「vbCritical」を記述しています(8行目)。

エラーメッセージを示すアイコン
エラーメッセージを示すアイコン

「Exitステートメント」により、処理を中断(=終了)させています(9行目)。


シート「sample」のセル「B2」に値を設定していない状態で上記を実行すると、以下のエラーメッセージが表示されます。

値を設定していない
値を設定していない
入力必須チェックのエラーメッセージ
入力必須チェックのエラーメッセージ
PR

フォルダ存在チェック

ここでは例として、
 ・シート「sample」のセル「B2」に
 ・設定されているフォルダが存在するかをチェック
します。

存在しない場合は、処理を中断(=終了)します。

Option Explicit

Sub sample()
    
    Dim isPath As String

    'フォルダ存在チェックチェック
    isPath = Dir(Range("B2").Value, vbDirectory)
    
    If isPath = "" Then
    
        MsgBox "セルに「B2」に設定されたフォルダは存在しません。" & vbCrLf & vbCrLf & _
               "存在するフォルダを設定してください。", _
               vbOKOnly + vbCritical, "フォルダ存在チェックエラー"
        Exit Sub
        
    End If
    
    'メイン処理
    '・
    '・
    '・
    '・
    
End Sub

「Dir関数」の2つ目の引数に「vbDirectory」を指定することで、フォルダの存在チェックをしています(8行目)。
※存在する場合は「フォルダ名」が返ります。
※存在しない場合は「空文字」が返ります。


シート「sample」のセル「B2」に存在しないフォルダを設定した状態で上記を実行すると、以下のエラーメッセージが表示されます。

存在しないフォルダを設定
存在しないフォルダを設定
フォルダ存在チェックのエラーメッセージ
フォルダ存在チェックのエラーメッセージ
PR

ファイル存在チェック

ここでは例として、
 ・シート「sample」のセル「B2」に
 ・設定されているファイルが存在するかをチェック
します。

存在しない場合は、処理を中断(=終了)します。

Option Explicit

Sub sample()
    
    Dim isPath As String

    'ファイル存在チェックチェック
    isPath = Dir(Range("B2").Value, vbNormal)
    
    If isPath = "" Then
    
        MsgBox "セルに「B2」に設定されたファイルは存在しません。" & vbCrLf & vbCrLf & _
               "存在するファイルを設定してください。", _
               vbOKOnly + vbCritical, "ファイル存在チェックエラー"
        Exit Sub
        
    End If
    
    'メイン処理
    '・
    '・
    '・
    '・
    
End Sub

「Dir関数」の2つ目の引数に「vbNormal」を指定することで、ファイルの存在チェックをしています(8行目)。
※存在する場合は「ファイル名」が返ります。
※存在しない場合は「空文字」が返ります。


シート「sample」のセル「B2」に存在しないファイルを設定した状態で上記を実行すると、以下のエラーメッセージが表示されます。

存在しないファイルを設定
存在しないファイルを設定
ファイル存在チェックのエラーメッセージ
ファイル存在チェックのエラーメッセージ
PR

参考①

Excelが持つ機能である「入力規則」を使用することでも、入力チェックを実現できます。

入力規則」により、そもそも「不正な値を入力不可」にできます。
※「入力された値が不正な値かどうかをチェックする」ではなく、「そもそも不正な値を入力不可にする」です。

詳細は以下の記事をご確認ください。
※下記は「VBAで入力規則を設定する方法」を紹介しています。
※VBAでなく手動で入力規則を設定しても、もちろん良いです。


●数値のみ入力できるようにする


●指定した文字数のみ入力できるようにする


●日付のみ入力できるようにする


また入力してほしい値を「プロダウン」で羅列することで、同じく「不正な値を入力不可」にできます。
※「プルダウン」も「入力規則」で実現します。

詳細は以下の記事をご確認ください。

PR

参考②

Excelが持つ機能である「条件付き書式」を使用することでも、入力チェックを実現できます。

条件付き書式」により、「値が未設定のセル」を直感的に分かるようにできます。

詳細は以下の記事をご確認ください。

PR

参考③

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●Exitステートメント


●Dir関数


●改行(vbCrLf等の定数)

タイトルとURLをコピーしました