Excelマクロ・VBA 英字、数字、カナ、記号の半角・全角を相互変換

文字種を指定して半角・全角を相互変換するユーザ定義関数を紹介します。

(支障が発生するケースは少ないと思いますが、記号変換は完全ではありません)

Web版のツールもあります。

サンプルファイル

※セキュリティの警告が出る場合は有効化してください。(解除方法↓)

サンプルファイルの中に保存されているユーザ定義関数HalfFullTranslateを利用します。

=HalfFullTranslate(文字列,英字の変換種類,数字の変換種類,カナの変換種類,記号の変換種類)
引数省略時の値説明
文字列(text)省略不可変換する文字列を指定
英字の変換種類 (alphabet) 省略不可1:半角→全角
2:全角→半角
その他:変換なし
数字の変換種類 (numeric)省略不可 1:半角→全角
2:全角→半角
その他:変換なし
カナの変換種類 (kana)省略不可 1:半角→全角
2:全角→半角
その他:変換なし
記号の変換種類 (symbol)省略不可 1:半角→全角
2:全角→半角
その他:変換なし
引数の詳細

コードサンプル

コードは下記のとおりです。

標準モジュールを追加してペーストすれば任意のブックで使用可能です。

Option Explicit

Public Function HalfFullTranslate(ByVal text, ByVal alphabet, ByVal numeric, ByVal kana, ByVal symbol) As String
    Const HARF_TO_FULL As Integer = 1
    Const FULL_TO_HARF As Integer = 2

    Dim tmp As String
    Dim result As String
    
    If (VarType(text) <> vbString) Then
        tmp = CStr(text)
    Else
        tmp = text
    End If
    
    result = ""
    
    Dim i As Long
    Dim c As String
    Dim isTranslated As Boolean
    
    For i = 1 To Len(tmp)
        c = Mid(tmp, i, 1)
        
        If c Like "[0-90-9]" Then
            If numeric = FULL_TO_HARF Then
                result = result & StrConv(c, vbNarrow)
            ElseIf numeric = HARF_TO_FULL Then
                result = result & StrConv(c, vbWide)
            Else
                result = result & c
            End If
        ElseIf c Like "[A-Za-zA-Za-z]" Then
        
            If alphabet = FULL_TO_HARF Then
                result = result & StrConv(c, vbNarrow)
            ElseIf alphabet = HARF_TO_FULL Then
                result = result & StrConv(c, vbWide)
            Else
                result = result & c
            End If
        ElseIf c Like "[ア-ンア-ン]" Then
        
            If kana = FULL_TO_HARF Then
                result = result & StrConv(c, vbNarrow)
            ElseIf kana = HARF_TO_FULL Then
                result = result & StrConv(c, vbWide)
            Else
                result = result & c
            End If
        Else
        
            If symbol = FULL_TO_HARF Then
                result = result & StrConv(c, vbNarrow)
            ElseIf symbol = HARF_TO_FULL Then
                result = result & StrConv(c, vbWide)
            Else
                result = result & c
            End If
            
        End If
    Next i
    
    HalfFullTranslate = result
End Function

関連記事

マクロ・VBAの学習・活用方法の記事一覧