自分自身を大文字に変換した後、変換前後を比較すると大文字小文字を判定できる。
VBAでは大文字小文字がイコールではうまく判定されないので、
StrComp("変換文字列1", "変換文字列2", vbBinaryCompare)
でバイナリでの比較を行う必要がある。
Option Explicit '/** ' * IsUpperString ' * 入力文字列が大文字かを調べる ' * @param inputValue 比較する文字列 ' * @param Optional inputValue 比較する文字数 1以上 :先頭からの文字数 ' * 0(省略):文字列全体 ' * -1以下 :末尾からの文字数 ' * @return True:大文字 False:小文字 ' */ Public Function IsUpperString(ByVal inputValue As String, _ Optional ByVal checkLen As Integer = 0) As Boolean Dim checkString As String Dim upperString As String '引数に応じてチェック対象の文字を取得 If checkLen < 0 Then checkString = Right(inputValue, Abs(checkLen)) ElseIf checkLen > 0 Then checkString = Left(inputValue, checkLen) Else checkString = inputValue End If 'チェック対象の文字を大文字に変換 upperString = StrConv(checkString, vbUpperCase) '大文字にしたチェック対象の文字列と、変換前の文字列を比較 If StrComp(upperString, checkString, vbBinaryCompare) = 0 Then IsUpperString = True Else IsUpperString = False End If End Function '動作確認 Public Sub test() 'True Debug.Print IsUpperString("A") 'False Debug.Print IsUpperString("a") 'True Debug.Print IsUpperString("ABCd", 2) 'True Debug.Print IsUpperString("ABCd", 3) 'False Debug.Print IsUpperString("ABCd", 4) 'True Debug.Print IsUpperString("aBCD", -2) 'True Debug.Print IsUpperString("aBCD", -3) 'False Debug.Print IsUpperString("aBCD", -4) End Sub