文字列の最後の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
)。