Excel VBAで文字列を扱っていると、
- 英字をすべて大文字に統一したい
- 商品コードや社員コードを正規化したい
- 大文字・小文字の違いで比較処理が失敗する
- データを整形してからCSV出力したい
といった場面があります。
手作業で大文字に修正することもできますが、件数が多くなるほどミスが発生しやすくなります。
そんなときに便利なのが、文字列を大文字へ変換できる「UCase関数」です。
この記事では、UCase関数の基本的な使い方から、実務での活用方法、使用時の注意点まで詳しく解説します。
✅ VBAのUCase関数とは?
文字列を比較するときに、大文字と小文字が混在していると思わぬ不具合が起こることがあります。
特に、商品コードや顧客コードのような識別子では、表記の揺れを防ぐことが重要です。
データ入力時は気付かなくても、後から検索や比較処理で問題になるケースは少なくありません。
そのため、処理の最初で文字列を統一しておくことが実務ではよくあります。
UCase関数は、文字列を大文字へ変換するための関数です。
・UCase関数の構文
UCase(文字列)
・使用例
Dim userName As String
userName = UCase("ExcelVba")
結果
EXCELVBA
✅ VBAでUCase関数を使う基本例
最初はシンプルな使い方を理解しておくことが大切です。
後から複雑な処理へ応用するときも、基本を理解しておくと流れが分かりやすくなります。
・文字列を大文字へ変換する
「動けばよい」という書き方ではなく、変数名から処理内容が分かるようにしておくと、後から見返したときに理解しやすくなります。
Sub ConvertUpperCase()
Dim originalText As String
Dim upperCaseText As String
'変換前の文字列
originalText = "ExcelVba"
'大文字へ変換
upperCaseText = UCase(originalText)
MsgBox upperCaseText
End Sub
実行結果
EXCELVBA
・なぜ変数へ格納するのか
直接、
MsgBox UCase("ExcelVba")
と書くこともできます。
しかし実務では、
- 比較処理に使う
- CSV出力する
- セルへ書き込む
など、後続処理で利用するケースが多くあります。
そのため、一度変数へ格納する構成の方が保守しやすくなります。
✅ セルの値を大文字へ変換する方法
実務ではセルの値を加工する場面が多くあります。
特に社員コードや型番などは、大文字で統一することで入力ミスを減らせます。
・セルの値を変換するコード
セルを直接書き換える構成にすることで、後から別シートへ流用しやすくなります。
Sub ConvertCellValue()
Dim targetSheet As Worksheet
Dim originalValue As String
Set targetSheet = ActiveSheet
'A1セルの値を取得
originalValue = targetSheet.Range("A1").Value
'大文字へ変換して戻す
targetSheet.Range("A1").Value = UCase(originalValue)
End Sub
・セルを直接書き換えるメリット
この構成にしておくことで、
- シート変更に対応しやすい
- コードを再利用しやすい
- 修正箇所が少なくなる
というメリットがあります。
セルの値を文字列として扱う場合は、ValueだけでなくTextプロパティを使う場面もあります。表示形式を維持したまま文字列として取得したい場合は、【VBA】Textプロパティでセルの値を文字列として取得する方法|表示形式をそのまま扱う実務テクニックも参考になります。
✅ 大量データをまとめて変換する方法
実務では1件だけでなく、数百件、数千件のデータを処理することがあります。
そのため、ループ処理を組み合わせることがよくあります。
・大量データを一括変換するコード
処理範囲を変数化しておくことで、後から最終行取得方法を変更しやすくしています。
Sub ConvertUpperCaseList()
Dim targetSheet As Worksheet
Dim lastRow As Long
Dim rowIndex As Long
Set targetSheet = ActiveSheet
lastRow = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row
For rowIndex = 1 To lastRow
'A列の文字列を大文字へ変換
targetSheet.Cells(rowIndex, 1).Value = _
UCase(targetSheet.Cells(rowIndex, 1).Value)
Next rowIndex
End Sub
・ループ処理を採用する理由
この書き方なら、
- 対象列を変更しやすい
- 条件付き処理を追加しやすい
- 他のシートへ流用しやすい
というメリットがあります。
✅ 比較処理の前に大文字へ統一する考え方
実務では、大文字小文字の違いによって一致判定に失敗することがあります。
そのため、比較する前に文字列を統一することがよくあります。
・比較前に変換するコード
単純に比較するよりも、事前に揃えておく方が後から条件追加しやすくなります。
Sub CompareText()
Dim inputCode As String
Dim masterCode As String
inputCode = UCase("abc123")
masterCode = UCase("ABC123")
If inputCode = masterCode Then
MsgBox "一致しました"
End If
End Sub
・なぜ事前変換するのか
比較式の中で直接UCaseを使うことも可能です。
しかし、
If UCase(inputCode) = UCase(masterCode) Then
のように毎回変換するより、
最初に統一しておく方が、
- 可読性が高い
- デバッグしやすい
- 条件追加しやすい
という利点があります。
大文字と小文字を統一したあとに文字列比較を行う場合は、比較方法そのものも重要になります。大文字小文字の区別や比較方法まで含めて安全に判定したい場合は、【VBA】StrComp関数の活用|文字列比較を安全・正確に行う実務テクニックも参考にしてみてください。
文字列を統一した後は、条件分岐で正しく比較できるかも重要です。実務で壊れにくいIF文の書き方については、【VBA】文字列の完全一致の処理(IF文)|実務で壊れない条件分岐の基本設計で詳しく解説しています。
✅ UCase関数を使うときの注意点
便利な関数ですが、実務ではいくつか気を付けるポイントがあります。
・日本語は変換されない
UCase関数は英字の大文字小文字を変換する関数です。
UCase("Excel")
↓
EXCEL
一方、
UCase("エクセル")
↓
エクセル
となり、日本語は変化しません。
・Null値には注意する
データベース連携などではNullが入る場合があります。
そのままUCase関数を使用するとエラーになることがあります。
処理前に値の確認を行うことが大切です。
UCase関数を使用する際は、Null値や未初期化の変数によるエラーにも注意が必要です。値の状態を正しく判定したい場合は、【VBA】IsEmpty / IsNull / IsNothing の違いを徹底解説|未初期化・Null・Nothingを正しく見分けようもあわせて確認してみてください。
✅ CSV出力やデータ整形で活躍するUCase関数
UCase関数は、
- 社員コードの統一
- 商品コードの正規化
- メールアドレスの比較
- CSV出力前の整形
- データ検索の前処理
など、実務で活用されることが多い関数です。
単に「大文字へ変換する関数」と覚えるよりも、
「データの表記を統一して後続処理を安定させるための関数」
という視点で理解すると、より活用の幅が広がります。
UCase関数と組み合わせてデータ整形を行う場合は、値を文字列へ変換する場面も多くあります。型の違いによるトラブルを防ぎたい場合は、【VBA】CStr関数で値を文字列に変換する方法|型変換で失敗しない実務設計も役立ちます。
✅ まとめ:UCase関数で文字列を大文字へ統一しよう
今回紹介したポイントは以下の通りです。
- UCase関数は文字列を大文字へ変換できる
- セルの値も簡単に大文字化できる
- ループ処理と組み合わせれば大量データにも対応できる
- 比較処理の前に文字列を統一すると判定ミスを防げる
- 日本語には変化がない
- CSV出力やコード管理など実務でも活用場面が多い
大文字と小文字の揺れは、検索や比較処理の不具合につながる原因になります。
UCase関数を活用して、扱いやすく保守しやすいデータを作れるようにしていきましょう。