ラピードアクト株式会社

技術記事:ExcelVBAで仕事を効率化しようVol.21

みなさん、こんにちは。
ITソリューション事業部の林です。

本記事では、ExcelVBAのテクニックを紹介・解説いたします。

今回紹介するのは、「英文字の大文字/小文字変換」です。

【目次】

  1. 英文字の大文字/小文字変換する
  2. 構文
  3. 使用例
  4. 終わりに

それでは、始めましょう!

英文字の大文字/小文字変換する

文字列の中の英文字(アルファベット)を大文字/小文字変換するには、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関数を使用した文字列比較のテクニックの紹介でした。

それでは、また次回お会いしましょう!