文字列の最後の1文字が、特定の文字種(スペース、カタカナ、数字、ハイフン)に該当するかを判定

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

'********************************************************
'* 関数名: IsLastCharSpecified
'* 概要  : 文字列の最後の1文字が、特定の文字種(スペース、カタカナ、数字、ハイフン)に該当するかを判定
'*
'* 引数:
'*   inputString [String] - 判定対象の文字列
'*
'* 戻り値:
'*   [Boolean] - 最後の文字が以下のいずれかに該当すれば True、該当しなければ False
'*                ・スペース(全角/半角)
'*                ・カタカナ(全角/半角)
'*                ・数字(全角/半角/漢数字)
'*                ・ハイフン(全角/半角)
'********************************************************
Function IsLastCharSpecified(ByVal inputString As String) As Boolean
    ' 入力が空文字列なら対象外 → False を返す
    If Len(inputString) = 0 Then
        IsLastCharSpecified = False
        Exit Function
    End If
    
    ' 最後の1文字を取得
    Dim lastChar As String
    lastChar = Mid(inputString, Len(inputString), 1)
    
    ' ------------------------------------------
    ' スペースの判定(全角/半角)
    ' ------------------------------------------
    If lastChar = " " Or lastChar = " " Then
        IsLastCharSpecified = True
        Exit Function
    End If
    
    ' ------------------------------------------
    ' カタカナの判定(全角/半角)
    ' ・半角カタカナ: Unicode FF61?FF9F
    ' ・全角カタカナ: Unicode 30A0?30FF
    ' ------------------------------------------
    If (AscW(lastChar) >= &HFF61 And AscW(lastChar) <= &HFF9F) Or _
       (AscW(lastChar) >= &H30A0 And AscW(lastChar) <= &H30FF) Then
        IsLastCharSpecified = True
        Exit Function
    End If
    
    ' ------------------------------------------
    ' 数字の判定(全角/半角/漢数字)
    ' ・半角数字: "0"?"9"
    ' ・全角数字: "0"?"9"
    ' ・漢数字: 一?九
    ' ------------------------------------------
    If (lastChar >= "0" And lastChar <= "9") Or _
       (lastChar >= "0" And lastChar <= "9") Or _
       lastChar Like "[一二三四五六七八九]" Then
        IsLastCharSpecified = True
        Exit Function
    End If
    
    ' ------------------------------------------
    ' ハイフンの判定(全角/半角)
    ' ・半角: "-"
    ' ・全角: "-"
    ' ------------------------------------------
    If lastChar = "-" Or lastChar = "-" Then
        IsLastCharSpecified = True
        Exit Function
    End If
    
    ' 上記のどれにも当てはまらなければ False を返す
    IsLastCharSpecified = False
End Function

✅ 関数のポイントまとめ

  • 柔軟な入力対応:スペースや数字・カタカナ・ハイフンに全角・半角両方対応。
  • Unicode 判定:カタカナなどの種類を AscW を使って正確に判定。
  • 漢数字まで対応しているのが特徴的(例:末尾が「三」なら True)。

Follow me!