文字列が特定の条件を満たすかどうかを判定する関数

タイトルのマクロは、以下です。

'********************************************************
'* 関数名: IsValidString
'* 概要  : 文字列が特定の条件を満たすかどうかを判定する関数
'*
'* 引数:
'*   text [String] - 判定する文字列
'*
'* 戻り値:
'*   [Boolean] - 条件に合致すれば True、合致しない場合は False を返す
'*
'* 処理内容:
'*   - 数字のみの文字列は False を返す
'*   - 「4」で始まり「X」で終わる文字列で、その間は数字の場合、は False を返す
'*   - 「9」で始まり「X」で終わる文字列で、その間は数字の場合、は False を返す
'*   - 空文字列("")は False を返す
'*   - それ以外の場合は True を返す
'********************************************************
Function IsValidString(ByVal text As String) As Boolean
    ' 正規表現オブジェクトを作成(VBScript.RegExpを利用してパターンマッチを実施)
    Dim objRegEx As Object
    Set objRegEx = CreateObject("VBScript.RegExp")
    
    ' 条件1: 数字のみ(半角)の文字列かを判定
    objRegEx.IgnoreCase = True        ' 大文字小文字を区別しない(この場合は無効だが設定)
    objRegEx.Global = True            ' 文字列全体を対象に検索
    objRegEx.Pattern = "^\d+$"        ' 正規表現パターン:^は文字列の開始、\d+は1回以上の数字、$は文字列の終了
                                    ' 数字のみで構成された文字列をチェック
    
    ' 数字のみの文字列の場合、False を返す
    If objRegEx.test(text) Then
        IsValidString = False         ' 数字のみの文字列が入力された場合、Falseを返す
        Exit Function                 ' 関数を終了
    End If
    
    ' 条件2: 「4」で始まり「X」で終わる文字列かを判定
    objRegEx.Pattern = "^4\d*X$"     ' 正規表現パターン:^4で始まり、任意の数字が続き、最後にXで終わる
                                    ' 「4」で始まり「X」で終わる文字列をチェック
    'objRegEx.Pattern = "^4.*X$"       ' 正規表現パターン:^4で始まり、任意の文字列があり、Xで終わる
    
    If objRegEx.test(text) Then
        IsValidString = False         ' 条件に一致した場合、Falseを返す
        Exit Function                 ' 関数を終了
    End If
    
    ' 条件3: 「9」で始まり「X」で終わる文字列かを判定
    objRegEx.Pattern = "^9\d*X$"     ' 正規表現パターン:^9で始まり、任意の数字が続き、最後にXで終わる
                                    ' 「9」で始まり「X」で終わる文字列をチェック
    'objRegEx.Pattern = "^9.*X$"       ' 正規表現パターン:^9で始まり、任意の文字列があり、Xで終わる
    
    If objRegEx.test(text) Then
        IsValidString = False         ' 条件に一致した場合、Falseを返す
        Exit Function                 ' 関数を終了
    End If
    
    ' 条件4: 空文字列("")は False を返す
    If text = "" Then
        IsValidString = False         ' 空文字列の場合はFalseを返す
        Exit Function                 ' 関数を終了
    End If
    
    ' 条件に合致しない場合は True を返す
    IsValidString = True               ' どれにも当てはまらない場合、Trueを返す
End Function

コメントの詳細

  1. 関数の概要:
    • この関数は文字列が特定の条件に合致するかどうかを判定します。
    • 条件に合致しない場合に False を返し、条件に合致しない場合には True を返します。
  2. 条件1: 数字のみ(半角):
    • 数字のみの文字列を判定します。正規表現パターン ^\d+$ を使用し、文字列が数字のみの場合に False を返します。
  3. 条件2: 「4」で始まり「X」で終わる:
    • 正規表現パターン ^4\d*X$ を使用し、文字列が「4」で始まり、任意の数字が続き、「X」で終わる場合に False を返します。
  4. 条件3: 「9」で始まり「X」で終わる:
    • 正規表現パターン ^9\d*X$ を使用し、文字列が「9」で始まり、任意の数字が続き、「X」で終わる場合に False を返します。
  5. 条件4: 空文字列(””):
    • 空文字列の場合は False を返します。
  6. 条件に合致しない場合:
    • どれにも当てはまらない場合には True を返します。

Follow me!