【VBA】文字列を全角・半角に変換する

Excel・VBA

文字列を全角から半角、半角から全角に変換する方法です。

VBAでは、StrConv関数を用いて文字列の変換を行うことができます。

StrConv関数の概要

StrConv関数の書式です。

《書式》
StrConv(変換する文字列,変換の種類

引数である変換の種類については次の通りです。

定数 説明
vbUpperCase 1 大文字に変換。
vbLowerCase 2 小文字に変換。
vbProperCase 3 各単語の先頭を大文字に変換。
vbWide 4 半角を全角に変換。
vbNarrow 8 全角を半角に変換。
vbKatakana 16 ひらがなをカタカナに変換。
vbHiragana 32 カタカナをひらがなに変換。
vbUnicode 64 Unicodeに変換。
vbFromUnicode 128 Unicode からシステムの既定のコード ページに変換。

なお、変換の種類は組み合わせることが可能なものもあります。

定数名で指定する場合は、”+”でつなげて指定します。

例;vbUpperCase+vbWide

値で指定する場合は、合計値を指定します。

例;vbUpperCase(1)とvbWide(4)を組み合わせる場合は、5となります。

ただしvbUpperCasevbLowerCasevbWidevbNarrowのように同時に指定することができない組み合わせもあります。

文字列をStrConv関数で全角⇔半角変換する

前述の通りVBAで文字列の全角・半角変換を行うには、StrConv関数を利用します。その際に、引数で目的の定数(値)を指定することで変換できます。

StrConv関数で変換を全角・半角への変換を行うための定数は次の通りです。

  • 半角→全角:vbWide
  • 全角→半角:vbNarrow

サンプルコード

全角文字を入力すると半角文字に変換するサンプルコードです。

Sub Sample()

    Dim inWrd As String
    Dim outWrd As String

    inWrd = InputBox("文字列を入力", "文字列変換")
    If inWrd = "" Then
     MsgBox ("文字列が入力されませんでした。")
     GoTo edsub
    End If
    
    outWrd = StrConv(inWrd, vbNarrow)
    MsgBox ("変換前:" & inWrd & vbCrLf & "変換後:" & outWrd)
edsub:
End Sub

12行目のStrConv関数の引数をvbNarrowからvbWideに書き換えると半角→全角への変換となります。

なお入力された文字列について、半角・全角のチェックは上記サンプルには実装されていません。

まとめ

StrConv関数は、文字列を全角や半角に変換することができます。

入力された文字列が半角(全角)の場合に、vbNarrow(vbWide)で変換をしても半角(全角)のままなので、文字列が半角・全角と混在している場合など、まとめてどちらかに変換してしまえば文字列の種類を簡単に統一することができるので便利です。

コメント

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