カテゴリー
Microsoft

【Excel VBA】文字列内の半角カタカナのみを全角カタカナへと変換する関数コード!

ポイント

  • StrConv(string, vbWide) では半角英数記号も全角へ変換されてしまうため一工夫必要
  • CreateObject(“VBScript.RegExp”) を使用して正規表現で半角カタカナを抽出する。
  • 正規表現のヒット結果の集合と Replace 関数を用いて次の順番で処理する。
    1. 正規表現にヒットした部分をループし、
    2. ヒットした部分を全角へ変換した文字列を用意し、
    3. 変換対象文字列に対してヒットした部分を、全角変換後の文字列へ置換する。

VBA コード

Public Sub Test()
    Dim s As String: s = "あいうアイウABCABC!#$!#$。「」、・ー。「」、・ー"
    Debug.Print HanKanaToZen(s)
End Sub

''' <summary>
''' 半角カタカナを全角カタカナへ変換します。
''' 半角カタカナの 。「」、・ー は変換対象です。
''' カタカナ以外の半角文字は変換対象外です。
''' </summary>
''' <param name="v">文字列</param>
''' <returns>変換済み文字列</returns>
Public Function HanKanaToZen(ByVal v As Variant) As String
    Dim regExp As Object: Set regExp = CreateObject("VBScript.RegExp")
    regExp.pattern = "[¥uFF61-¥uFF9F]+"
    ' 文字列全体を検索するように設定
    regExp.Global = True
    ' 検索を実行
    Dim matches As Object: Set matches = regExp.Execute(v)

    ' マッチした半角カタカナを全角変換した文字列へ引数を置換
    Dim match As Object
    For Each match In matches
        v = Replace(v, match.Value, StrConv(match.Value, vbWide))
    Next match

    HanKanaToZen = v
End Function

結果

Test 関数の実行結果です。

あいうアイウABCABC!#$!#$。「」、・ー。「」、・ー

おわりに

実際には、エクセルシートの Range.Value に対して半角カタカナの全角への変換を行い、変換後の結果をシートへ反映する、といったように使いました♪

参考ページです。ありがとう存じます!

以上です。

コメントを残す