VBA共通:半角カタカナを全角カタカナ、全角英数字を半角に変換するユーザー定義関数

半角カタカナを全角カタカナに、全角英数字を半角に変換するユーザー定義関数を作成したので覚書きしておく。

ExcelのVBAでもAccessのVBAでも同じように使えます。

別の記事で半角カタカナを全角に、全角英数、記号を半角にするユーザー定義関数、半角カタカナのみを全角カタカナに変換するユーザー定義関数のサンプルプログラムについて記載しています。

関連記事欄に各記事のリンクを貼ってありますのでそちらを参照してください。

スポンサーリンク

ユーザー定義関数の概要

このユーザー定義関数の処理の概要としては、まず引数として受け取った対象文字データを一文字ずつ取り出す。

次に取り出した一文字のASCIIコードが半角カタカナ、全角英数字のASCIIコード範囲内か確認して範囲内だったらカタカナは全角、英数字は半角に変換して文字を作りなおすという感じです。

ユーザー定義関数のサンプルプログラム

以下に作成したユーザー定義関数のサンプルプログラムを記載します。 ExcelでもAccessでも標準モジュールに記載してください。

Function myStrConv(strData As String)
Dim i As Long, strTemp As String, OneString
For i = 1 To Len(strData)
    OneString = Asc(Mid(strData, i, 1))
    If OneString <= -32102 And OneString >= -32177 Then
        OneString = StrConv(Chr(OneString), vbNarrow)
    ElseIf OneString <= 221 And OneString >= 177 Then
        OneString = StrConv(Chr(OneString), vbWide)
    Else
        OneString = Chr(OneString)
    End If
       
    strTemp = strTemp & OneString
   
Next i
myStrConv = strTemp
End Function
  

ASCIIコードについては、以下を参考にしてください。

ASCIIコード表 - IT用語辞典 e-Words

ユーザー定義関数の使い方

作成したユーザー定義関数の使い方の例を以下に記載します。 基本的に通常の組み込み関数と同じ使い方ができます。

Excelで使用する場合

ワークシートのセルに式として =myStrConv("変換したい文字列") と入力すればOKです。

"変換したい文字列"部分は文字列が入ったセル番地を直接指定してもOKです。

例えば、=myStrConv(A1) という感じです。 もちろんVBAのプログラム中から呼び出して使用することも可能です。

Accessで使用する場合

Accessのクエリーなどで使用する場合は、式として myStrConv([フィールド名]) で良いです。

Excelで使用する場合と同様に標準の組み込み関数と同じように使用することができます。

半角、全角変換の関連記事

半角、全角変換に関連する他の記事のリンクを以下に貼っておきますので参考にしてください。

VBA共通:文字列データに混ざっている半角カタカナを全角カタカナに変換するユーザー定義関数
文字列データに混ざっている半角カタカナを全角カタカナに変更するユーザー定義関数のサンプルプログラムを覚書。記事ではExcelを使用していますが、基本的にはAccessのVBAなどでも同じように使用できます。カタカナだけが対象なのでアルファベ...
VBA共通:半角カタカナを全角、全角英数、記号を半角に変換するユーザー定義関数
以前にも似たようなサンプルコードを作成して記事にしたけれど、今回は、半角のカタカナを全角に、全角の英字、数字、記号を半角に変換するユーザー定義関数のサンプルプログラムを作ったので覚書。"半角のカタカナを全角に、全角の英字、数字、記号を半角に...

コメント

  1. すっきりしたコードに感銘しました。
    私のホームページでも紹介させていただきました。
    http://makoto-watanabe.main.jp/vba_character.html#myStrConv
    貴サイトへのリンクを明示しています。
    ご了解を、お願いいたします。
    貴重なノウハウを公開いただき、感謝いたします。

    • 了解いたしました。
      問題ありません。

タイトルとURLをコピーしました