和風スパゲティのレシピ

日本語でコーディングするExcelVBA

全半角/大小文字/カナを変換する - StrConv関数

VBAにおいて文字列変換を行う関数、StrConv関数を解説します。

第2引数で変換内容を指定でき、
「全角↔半角」「大文字↔小文字」「かな↔カナ」の変換をなどを行えます。

基本構文

変換後の文字列 = StrConv(元の文字列, 変換形式)

変換形式(Conversion)に用いることができる定数は以下の通りです。

定数 説明
vbUpperCase 1 小文字⇒大文字(英字)
vbLowerCase 2 大文字⇒小文字(英字)
vbProperCase 3 各単語の最初の文字だけを大文字(英字)
vbWide 4 半角⇒全角(英数カナ)
vbNarrow 8 全角⇒半角(英数カナ)
vbKatakana 16 ひらがな⇒全角カナ
vbHiragana 32 全角カナ⇒ひらがな
vbUnicode 64 文字列⇒Unicode
vbFromUnicode 128 Unicode⇒文字列

サンプルコード

' 変換の基本(英字大文字に)
StrConv("abc", vbUpperCase) ' ABC

' 対象文字以外は変換されずそのまま残る
StrConv("abcDEF123あいう", vbUpperCase) ' ABCDEF123あいう

' 引数を足し算すれば同時に変換することが可能
StrConv("ABC", vbLowerCase + vbNarrow) ' abc(小文字かつ半角に)
' 小文字⇒大文字(英字)
StrConv("abc", vbUpperCase) ' ABC
StrConv("abc", vbUpperCase) ' ABC(全角は全角)
StrConv("ν", vbUpperCase) ' Ν(ギリシャ文字も変換可能)

' 大文字⇒小文字(英字)
StrConv("ABC", vbLowerCase) ' abc
StrConv("ABC", vbLowerCase) ' abc(全角は全角)
StrConv("Ξ", vbLowerCase) ' ξ(ギリシャ文字も変換可能)

' 各単語の最初の文字だけを大文字(英字) ※ スペースしか対応していない
StrConv("visual basic", vbProperCase) ' Visual Basic
StrConv("visual_basic", vbProperCase) ' Visual_basic ×
StrConv("visual-basic", vbProperCase) ' Visual-basic ×

' 半角⇒全角(英数カナ)
StrConv("abc123カナ", vbWide) ' abc123カナ

' 全角⇒半角(英数カナ)
StrConv("abc123カナ", vbNarrow) ' abc123カナ

' ひらがな⇒全角カナ
StrConv("あいう", vbKatakana) ' アイウ

' 全角カナ⇒ひらがな
StrConv("アイウ", vbHiragana) ' あいう
StrConv("アイウ", vbHiragana) ' アイウ(半角カナには無反応)
StrConv("アイウ", vbHiragana + vbWide) ' あいう(vbWideを足せばOK)

' 文字列⇒Unicode
StrConv("あいう", vbUnicode) ' B0D0F0

' Unicode⇒文字列
StrConv("B0D0F0", vbFromUnicode) ' あいう

解説

StrConv関数を使用することで、特定文字種を指定形式に変換することができます。
(対象の文字種以外の文字はそのまま残ります)


「全角↔半角」「大文字↔小文字」「かな↔カナ」「文字列↔Unicode」の変換を行うことができ、引数を足し算すれば同時に変換を行うことも可能です。

' 英数字を小文字かつ半角に
StrConv("ABC", vbLowerCase + vbNarrow)

 

◇ 第2引数(Conversion)に用いることができる定数(再掲)

定数 説明
vbUpperCase 1 小文字⇒大文字(英字)
vbLowerCase 2 大文字⇒小文字(英字)
vbProperCase 3 各単語の最初の文字だけを大文字(英字)
vbWide 4 半角⇒全角(英数カナ)
vbNarrow 8 全角⇒半角(英数カナ)
vbKatakana 16 ひらがな⇒全角カナ
vbHiragana 32 全角カナ⇒ひらがな
vbUnicode 64 文字列⇒Unicode
vbFromUnicode 128 Unicode⇒文字列


注意すべき点として、全角↔半角変換には英数字だけでなくカタカナが含まれます。

実務では「英数字は半角のままカナを全角にしたい」ということもありますが、
これを一発で行う方法はありません。

文字列の中身を1文字ずつ調べて変換する必要がありますので、
この処理を行いたい場合はこちらの記事をご参考ください。

セル範囲内のすべての文字列を変換する

StrConv関数は関数のため、セル範囲に実行する場合はループを回す必要があります。

各種変換は以下のコードを参考に実装してください。

指定列内のすべての文字列を変換する

Dim wsデータ As Worksheet: Set wsデータ = Worksheets("○○")
Dim 最終行 As Long
最終行 = wsデータ.UsedRange.Rows.Count + wsデータ.UsedRange.Row - 1

' A列のすべての文字列を変換する
Dim R As Long
For R = 2 To 最終行

    wsデータ.Cells(R, 1).Value = StrConv(wsデータ.Cells(R, 1).Value, vbXXXX)

Next

特定のセル範囲内のすべての文字列を変換する

' セル範囲内のすべての文字列を変換する
Dim セル As Range
For Each セル In Worksheets("○○").Range("A1:D5")

    セル.Value = StrConv(セル.Value, vbXXXX)

Next