ここでは、先頭の文字のみと文字列全体の2種類を掲載しています。
VBAで大文字と小文字を識別させるには、Option Compare Binaryを宣言します。
クエリで判定するので、VBAはFunctionプロシージャを作成し、判定結果を返すようにします。
先頭の文字が大文字か小文字か判定するには、LEFT関数で左から1文字取得し、それがUCASE関数で大文字にした文字と同じかどうかで判定します。
同じならば(大文字ならば)TRUEを、違う場合(小文字ならば)FALSEを返します。
文字列全体が大文字か小文字か判定するには、MID関数で1文字ずつ取り出し、UCASE関数で比較し判定します。
For分で文字列の長さをループし、全ての文字が大文字ならばTRUEを、小文字ならばFALSEを返します。
関連する「Accessクエリ:先頭文字を大文字に変換する・StrConv関数の使い方」を掲載していますので参考にしてください。
商品コードフィールドには、大文字と小文字が色々混じったデータが入力されています。
先頭文字を判定し、結果を返すVBAです。
Option Compare Binary
Function Mymoji(s1 As String) As Boolean
Dim i As Long
If Left(s1, 1) = UCase(Left(s1, 1)) Then
Mymoji = True
Else
Mymoji = False
End If
End Function
VBAを使用したクエリを作成します。
式1: Mymoji([商品コード])フィールドでVBAを呼び出しています。
抽出条件をTRUEにし先頭が大文字のみ抽出します。
クエリの実行結果です。
先頭が大文字のみ表示されています。
小文字のみ表示するには、抽出条件をFALSEに変更します。
クエリの実行結果です。
先頭が小文字のみ表示されています。
文字全体を判定するVBAです。
Option Compare Binary
Function Mymoji(s1 As String) As Boolean
Dim i As Long
Mymoji = True
For i = 1 To Len(s1)
If (Not Mid(s1, i, 1) Like "[0-9]") And Mid(s1, i, 1) <> "-" Then
If Mid(s1, i, 1) = LCase(Mid(s1, i, 1)) Then
Mymoji = False
Exit For
End If
End If
Next
End Function
VBAで判定するクエリです。
内容は上と同じです。
クエリの実行結果です。
商品コード全部が大文字のレコードのみ表示されています。