みなさん、こんにちは。
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関数を使用した文字列比較のテクニックの紹介でした。
それでは、また次回お会いしましょう!