[VBA] LCase・UCase (大文字⇔小文字の変換)

 この記事では、VBA の LCase と UCase で、アルファベットの大文字・小文字の相互変換をする方法について解説します。
 

LCase・UCase

 LCase はアルファベットの大文字を小文字に変換し、UCase はアルファベットの小文字を大文字に変換します。簡単なマクロで確認してみましょう。

‘[VBA] 大文字から小文字に変換するプロシージャ

Sub Upper_To_Lower()

  Dim myword1 As String
  Dim myword2 As String

  myword1 = “KOBATO”
  myword2 = LCase(myword1)

  Debug.Print myword2

End Sub

‘[VBA] 小文字から大文字に変換するプロシージャ

Sub Lower_To_Upper()

  Dim myword1 As String
  Dim myword2 As String

  myword1 = “kobato”
  myword2 = UCase(myword1)

  Debug.Print myword2

End Sub

 Upper_To_Lower() を実行すると、myword1 という変数に入っている KOBATO という大文字を小文字に変えて kobato と表示されますよ。Lower_To_Upper() はその逆に、myword1 という変数に入っている kobato という小文字を大文字に変換して KOBATO と表示されます。
 
 LCase関数と UCase関数は引数にセルを指定することもできますが、指定できるのはひとつのセルだけです。セル範囲を指定することはできません。そこで、選択したセルに入力されているアルファベットを全て大文字に変えるには、次のようなマクロを書きます。

‘[VBA] 選択範囲のアルファベットを大文字に変換するプロシージャ

Sub Uppercase()

  Dim myrange As Range

  For Each myrange In Selection
    myrange.Value = UCase(myrange)
  Next

End Sub

 オブジェクト型変数を使っているところがポイントです。
 変数 myrange にはセルがそのまま入ります。

 For Each myrange In Selection

  myrange.Value = UCase(myrange)

 Next

という記述は、選択した範囲内の1つ1つのセルを順に変数 myrange に入れて大文字に変えるという処理を行なわせるものです。For…Each は本当に便利ですね。まあとにかく、下の図のように大文字と小文字の入り混じったデータをまとめて選択してマクロを実行してみてください。

 VBAのLCase関数とUCase関数(大文字と小文字)

 こんなふうに全部大文字に変わります。

Excel VBA
Excel VBA 表計算とプログラミング学習サイト

コメント

タイトルとURLをコピーしました