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