みなさん、こんにちは。
ITソリューション事業部の林です。
本記事では、ExcelVBAのテクニックを紹介・解説いたします。
今回紹介するのは、「英文字の大文字/小文字変換」です。
【目次】
それでは、始めましょう!
英文字の大文字/小文字変換する
文字列の中の英文字(アルファベット)を大文字/小文字変換するには、Ucase関数とLcase関数を使用します。
Ucase関数:小文字⇒大文字変換
Lcase関数:大文字⇒小文字変換
例えば、「abc」を「ABC」に変換する場合はUcaseを、
反対に「ABC」を「abc」に変換する場合はLcaseを使用します。
関数の名称の由来は、Ucaseは「UpperCase」、Lcaseは「LowerCase」です。
関数の機能としてはこれだけですが、実は文字列検索や比較を行う処理では大変便利です。
例として、ファイル名に比較文字が含まれているか判定するケースを挙げます。
比較文字 :sample
ファイル名:Sample.xlsx
ここではマクロの仕様として、
ファイル名(Sample.xlsx)に比較文字(sample)が「含まれている」と判定させるものとしましょう。
しかし、両者を比較すると、「含まれていない」と判定されてしまいます。
なぜかというと、ファイル名の大文字「S」の部分が、比較文字と一致しないからです。

このような場合には、Ucase/Lcase関数を使用することで、解決することができます。
構文
Ucase/Lcase関数の構文は以下の通りです。
Ucase(文字列)
Lcase(文字列)
関数の戻り値についてですが、Ucaseは大文字を、Lcaseは小文字を返します。
関数に渡した文字列は一律に変換されますので、大文字と小文字が混在していても問題ありません。

使用例
使用例① 
Ucase/Lcase関数の戻り値をイミディエイトウインドウに出力します。
なお、日本語文字を関数に渡しても、結果は日本語文字のままです。
Sub ExcelVBA_021_Example1()
    Debug.Print "abc123を大文字変換⇒" + UCase("abc123")
    Debug.Print "aBc123を大文字変換⇒" + UCase("aBc123")
    Debug.Print "ABC123を小文字変換⇒" + LCase("ABC123")
    Debug.Print "AbC123を小文字変換⇒" + LCase("AbC123")
    Debug.Print "あいうえお(日本語文字)を大文字変換⇒" + UCase("あいうえお")
    Debug.Print "あいうえお(日本語文字)を小文字変換⇒" + LCase("あいうえお")
End Sub
(出力結果)

使用例② 
Lcase関数使用時と未使用時の文字列比較結果を出力します。
1つめと2つめのIfステートメントは同じですが、Lcaseを使用したことで結果が変化したことがわかります。
Sub ExcelVBA_021_Example2()
    Dim 比較文字 As String
    Dim 文字列 As String
    比較文字 = "sample" '比較文字を指定
    文字列 = "Sample.xlsx" '比較される文字列を指定
    '===Lcaseを使用せず文字列比較する処理===
    Debug.Print "[Lcase未使用時]"
    If InStr(1, 文字列, 比較文字) > 0 Then
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれています"
    Else
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれていません"
    End If
    '===Lcaseを使用して文字列比較する処理===
    文字列 = LCase("Sample.xlsx") 'Lcaseを使用して小文字変換
    Debug.Print "[Lcase使用時]"
    If InStr(1, 文字列, 比較文字) > 0 Then
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれています"
    Else
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれていません"
    End If
End Sub
(出力結果)

使用例③ 
Ucase関数使用時と未使用時の文字列比較結果を出力します。
こちらも使用例②と同じように、UcaseでIfステートメントの結果が変化しています。
Sub ExcelVBA_021_Example3()
    Dim 比較文字 As String
    Dim 文字列 As String
    比較文字 = "SAMPLE" '比較文字を指定
    文字列 = "Sample.xlsx" '比較される文字列を指定
    '===Ucaseを使用せず文字列比較する処理===
    Debug.Print "[Ucase未使用時]"
    If InStr(1, 文字列, 比較文字) > 0 Then
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれています"
    Else
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれていません"
    End If
    '===Ucaseを使用して文字列比較する処理===
    文字列 = UCase("Sample.xlsx") 'Ucaseを使用して大文字変換
    Debug.Print "[Ucase使用時]"
    If InStr(1, 文字列, 比較文字) > 0 Then
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれています"
    Else
        Debug.Print 文字列 + "に" + 比較文字 + "は含まれていません"
    End If
End Sub
(出力結果)

終わりに
以上、Ucase/Lcase関数を使用した文字列比較のテクニックの紹介でした。
それでは、また次回お会いしましょう!




















