Access:クエリでVBAを実行 - 大文字か小文字か判定し抽出する

VBAでアルファベットが大文字か小文字か判定し、どちらかを抽出するAccessのクエリを作成します。

BackHome Backクエリ

ここでは、先頭の文字のみと文字列全体の2種類を掲載しています。

VBAで大文字と小文字を識別させるには、Option Compare Binaryを宣言します。

クエリで判定するので、VBAはFunctionプロシージャを作成し、判定結果を返すようにします。

先頭の文字が大文字か小文字か判定するには、LEFT関数で左から1文字取得し、それがUCASE関数で大文字にした文字と同じかどうかで判定します。

同じならば(大文字ならば)TRUEを、違う場合(小文字ならば)FALSEを返します。

文字列全体が大文字か小文字か判定するには、MID関数で1文字ずつ取り出し、UCASE関数で比較し判定します。

For分で文字列の長さをループし、全ての文字が大文字ならばTRUEを、小文字ならばFALSEを返します。

関連する「Accessクエリ:先頭文字を大文字に変換する・StrConv関数の使い方」を掲載していますので参考にしてください。




VBAで大文字か小文字かを判定するクエリの作成方法


■ クエリの元になる商品マスターテーブル

商品コードフィールドには、大文字と小文字が色々混じったデータが入力されています。

クエリの元になる商品マスターテーブル

■ 先頭が大文字か小文字か判定するVBAと、その結果で抽出するクエリ

先頭文字を判定し、結果を返すVBAです。

先頭文字を判定し、結果を返すVBA

作成したVBAの解説

  • 大文字と小文字を識別させるために、Option Compare Binaryを宣言しています。
  • 先頭文字を取り出すにはLEFT関数を使用します。
  • UCASE関数で大文字に変換し判定しています。
  • Functionプロシージャで、大文字ならTRUE、小文字ならFALSEを返します。

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にし先頭が大文字のみ抽出します。

VBAを使用したクエリを作成

クエリの実行結果です。

先頭が大文字のみ表示されています。

先頭が大文字のみ表示

小文字のみ表示するには、抽出条件をFALSEに変更します。

小文字のみ表示するには、抽出条件をFALSEに変更する

クエリの実行結果です。

先頭が小文字のみ表示されています。

先頭が小文字のみ表示

文字列全体が大文字かどうか判定し抽出するクエリ

文字全体を判定するVBAです。

文字全体を判定するVBA

作成したVBAの解説

  • FORとLEN関数で文字数分ループします。
  • Like "[0-9]"で数字かどうか判定しています。
  • MID関数で1文字ずつ取り出し判定します。
  • もし小文字が見つかればFORループを中断し抜けます。
  • Functionプロシージャで、全て大文字ならTRUE、小文字が含まれているならFALSEを返します。

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で判定するクエリです。

内容は上と同じです。

VBAで判定するクエリ

クエリの実行結果です。

商品コード全部が大文字のレコードのみ表示されています。

商品コード全部が大文字のレコードのみ表示

BackHome Backクエリ

Copyright(C) FeedSoft