VBAで全角カタカナを半角カタカナに変える方法
資料を作成するときに、全角カタカナを半角カタカナに直していませんか?
私はよくやります。
最初は全角カタカナで書いていたものの、途中でスペースが不足して半角カタカナに変えることがあります。
仕方ないと思ってやるものの、この作業面倒ですよね。
この作業、自動化してみませんか?
VBAを使えば、全角カタカナを一瞬で半角カタカナに変換することができます。
ワンクリックで半角カタカナにしてみませんか?
全角カタカナを半角カタカナに変えるコード
Private Function CnvZenKanaToHan(ByVal strZen As String) As String
'カタカナ⇒カタカナ変換して返す
Dim strHanList As Variant, strZenList As Variant
strHanList = Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "パ", "ピ", "プ", "ペ", "ポ", _
"。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", _
"タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ン")
strZenList = Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "パ", "ピ", "プ", "ペ", "ポ", _
"。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", _
"タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ン")
'置換処理
Dim i As Long
For i = LBound(strHanList) To UBound(strHanList)
strZen = Replace(strZen, strZenList(i), strHanList(i))
Next
CnvZenKanaToHan = strZen
End Function
このプログラムは全角カタカナを含む文字列を、半角カタカナに変換する関数です。
文字列strZenを引数として受け取り、変換した文字列を返しています。
置換方法ですが、全角/半角カタカナのリスト(配列)を用意して、これを1つずつ置き換えしています。
関数にしているため、使い方は無限大です。
1つ具体的な使用例を紹介するので、これを参考に自分に合ったプログラムを作ってみてください。
使用例:選択範囲のセルを半角カタカナに変換
Sub SelectToHanKana()
'選択範囲のセルを半角カタカナへ変換
'セルを選択していない場合は終了
If TypeName(Selection) <> "Range" Then Exit Sub
Dim rng As Range
For Each rng In Selection
rng.Value = CnvZenKanaToHan(rng.Value)
Next
End Sub
このマクロを実行すると、選択範囲のすべてのセルに対して全角カタカナ⇒半角カタカナの変換を実行します。
(各セルに対して先ほどの関数を実行しています)
セルの位置を固定していないため、マウスで範囲選択するだけで簡単に実行することができます。
また、このコードはアドイン化がオススメです。アドインにしておけばクイックアクセスツールバーから簡単に実行できます。
アドイン化のやり方については、こちらの記事を参照ください。