Excel VBA 文字列を全角や半角などに変換する方法

この記事では、文字を全角から半角に変換、小文字から大文字に変換など様々な変換方法を掲載しています。

入力フォームなどを作った場合、利用者ごとに数字やアルファベットなどの入力方式が全角文字だったり、半角文字だったりして統一出来ないといったことが発生します。

この場合の対処法としては、入力時に制限をかける方法と、入力後にプログラム側で変換をしてしまう方法が考えられます。

ここでは、入力後の文字列に対して全角や半角への変換を行う方法を掲載しています。

 

sponsor link

StrConv関数の構文

文字列の変換にはStrConv関数を利用します。StrConv関数を利用すれば、全角、半角、大文字、小文字、ひらがな、カタカナなど様々な変換が行えます。

(構文)

StrConv(string, conversion, [ LCID ])

(参考)https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function

各パラメータの説明は下記のとおりです。

パラメータ説明
string必須 変換する文字列を指定。
conversion必須 変換タイプを指定 (Integer型の数値ですが、定数が準備されています)
LCIDオプション LocaleID

 

変換タイプ(conversion)は下記の通りです、全角半角や大文字小文字以外にも様々な変換が可能です。

定数説明
vbUpperCase1大文字に変換します。
vbLowerCase2小文字に変換します。
vbProperCase3文字列内のすべての単語の最初の文字を大文字に変換します。
vbWide4全角文字に変換します。
vbNarrow8半角文字に変換します。
vbKatakana16ひらがな文字をカタカナ文字に変換します。日本語環境
vbHiragana32カタカナ文字をひらがな文字に変換します。日本語環境
vbUnicode64システム既定の文字コードから Unicode に変換します。
vbFromUnicode128Unicode からシステムの既定の文字コードに変換します。

 

StrConv関数の使用例

下記は具体的な例として4パターンの使用例としてサンプルソースと変換結果を掲載しています。

1.全角から半角に変換

2.半角から全角に変換

3.小文字から大文字に変換

4.大文字から小文字に変換

Private Sub CommandButton1_Click()
    Dim str As String
    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet
    If IsNull(ws.Cells(2, 2).Value) = False Then
        '1.全角 ⇒ 半角 に変換
        ws.Cells(1, 3).Value = StrConv(ws.Cells(1, 1).Value, vbNarrow)
        '2.半角 ⇒ 全角 に変換
        ws.Cells(2, 3).Value = StrConv(ws.Cells(2, 1).Value, vbWide)
        '3.小文字 ⇒ 大文字 に変換
        ws.Cells(3, 3).Value = StrConv(ws.Cells(3, 1).Value, vbUpperCase)
        '4.大文字 ⇒ 小文字 に変換
        ws.Cells(4, 3).Value = StrConv(ws.Cells(4, 1).Value, vbLowerCase)
    End If
End Sub

実行結果は下記の通りです。

 

全角半角や大文字小文字が混在する文字列を変換対象とした場合、その文字列の中で対象となる文字のみが変換された結果が返却されます。

例えば「ABCあDEF」という文字列を小文字に変換した場合、「あ」は対処外となり「abcあdef」という結果が返却されます。

コメント

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