VBAで自動化 VBA一覧 変換・データ型 配列・データ操作

【VBA】大文字と小文字を区別しない:LCase・UCase

Excel VBAでは、大文字と小文字の変換が必要な場合があります。LCase(小文字に変換)とUCase(大文字に変換)関数を使うことで、文字列を一貫して処理したり、比較する際のエラーを防ぐことができます。

LCaseUCase関数の使い方を解説します。

Excel VBAでのLCaseとUCase関数の使い方

LCaseとUCase関数とは?

LCase関数

  • 目的: 文字列をすべて小文字に変換します。
  • 構文: LCase(文字列)
  • 戻り値: 小文字に変換された文字列

UCase関数

  • 目的: 文字列をすべて大文字に変換します。
  • 構文: UCase(文字列)
  • 戻り値: 大文字に変換された文字列

基本的な使い方

小文字に変換(LCase)

Sub ExampleLCase()

Dim text As String
text = "Hello World"
MsgBox LCase(text) ' 結果: "hello world"

End Sub

大文字に変換(UCase)

Sub ExampleUCase()

Dim text As String
text = "Hello World"
MsgBox UCase(text) ' 結果: "HELLO WORLD"

End Sub

文字列比較での使用

VBAの文字列比較はデフォルトで大文字小文字を区別しませんが、コードを明示的に制御したい場合にLCaseUCaseを使用します。

【使用例: 大文字小文字を無視して比較】

Sub CompareStringsIgnoreCase()

Dim str1 As String
Dim str2 As String

str1 = "Hello"
str2 = "hello"

If LCase(str1) = LCase(str2) Then

MsgBox "同じ文字列とみなされます。"

Else

MsgBox "異なる文字列とみなされます。"

End If

End Sub


【使用例: 大文字小文字を区別して比較】

Sub CompareStringsCaseSensitive()

Dim str1 As String
Dim str2 As String

str1 = "Hello"
str2 = "hello"

If str1 = str2 Then

MsgBox "同じ文字列とみなされます。"

Else

MsgBox "異なる文字列とみなされます。"

End If

End Sub

データの正規化

Excelのセルに入力されたデータを小文字または大文字に統一することで、データの正規化を行います。

Sub NormalizeDataToLowerCase()

Dim cell As Range

' 選択範囲内のデータをすべて小文字に変換
For Each cell In Selection

If Not IsEmpty(cell.Value) Then

cell.Value = LCase(cell.Value)

End If

Next cell

End Sub


Sub NormalizeDataToUpperCase()

Dim cell As Range

' 選択範囲内のデータをすべて大文字に変換
For Each cell In Selection

If Not IsEmpty(cell.Value) Then

cell.Value = UCase(cell.Value)

End If

Next cell

End Sub

入力データの検証

ユーザー入力が特定の形式に一致しているかを確認する際に使用します。

Sub ValidateUserInput()

Dim userInput As String
userInput = InputBox("名前を入力してください:")

' 大文字小文字を無視して"admin"を検証
If LCase(userInput) = "admin" Then

MsgBox "管理者としてログインしました。"

Else

MsgBox "アクセスが拒否されました。"

End If

End Sub

複数のセルの内容を一括比較

複数のセル内の値を大文字小文字を無視して比較し、一致しているかを確認します。

Sub CompareCellValuesIgnoreCase()

Dim cell1 As Range
Dim cell2 As Range

' セルA1とB1を比較
Set cell1 = Range("A1")
Set cell2 = Range("B1")

If LCase(cell1.Value) = LCase(cell2.Value) Then

MsgBox "A1とB1は同じ値です。"

Else

MsgBox "A1とB1は異なる値です。"

End If

End Sub

注意点

  1. 空文字やNullの扱い
    • 空文字("")を渡すと、変換結果も空文字です。
    • Nullを渡すとエラーが発生します。必要に応じてIsNull関数でチェックしてください。
  2. 非アルファベット文字の扱い
    • 英字以外の文字(数字や記号など)は変換の影響を受けません。

Sub NonAlphabetCharacters()

Dim text As String
text = "1234-ABCD-xyz"
MsgBox LCase(text) ' 結果: "1234-abcd-xyz"
MsgBox UCase(text) ' 結果: "1234-ABCD-XYZ"

End Sub

まとめ

LCaseUCase関数は、文字列の小文字・大文字変換に役立つだけでなく、データ比較や正規化の場面で非常に便利です。データの統一や入力検証など、正確なデータ操作を求められるシナリオで強力なツールとなります。

    -VBAで自動化, VBA一覧, 変換・データ型, 配列・データ操作