このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

VBAで全角カタカナを半角カタカナに変える方法

2024年3月15日

資料を作成するときに、全角カタカナを半角カタカナに直していませんか?

私はよくやります。
最初は全角カタカナで書いていたものの、途中でスペースが不足して半角カタカナに変えることがあります。

仕方ないと思ってやるものの、この作業面倒ですよね。

この作業、自動化してみませんか?

VBAを使えば、全角カタカナを一瞬で半角カタカナに変換することができます。

ワンクリックで半角カタカナにしてみませんか?

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が難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい