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

このマクロを実行すると、選択範囲のすべてのセルに対して全角カタカナ⇒半角カタカナの変換を実行します。
(各セルに対して先ほどの関数を実行しています)

セルの位置を固定していないため、マウスで範囲選択するだけで簡単に実行することができます。

また、このコードはアドイン化がオススメです。アドインにしておけばクイックアクセスツールバーから簡単に実行できます。

アドイン化のやり方については、こちらの記事を参照ください。

他の「VBAライブラリ」の記事はこちらからどうぞ