VBA共通:文字列データに混ざっている半角カタカナを全角カタカナに変換するユーザー定義関数

VBA共通:文字列データに混ざっている半角カタカナを全角カタカナに変換するユーザー定義関数

文字列データに混ざっている半角カタカナを全角カタカナに変更するユーザー定義関数のサンプルプログラムを覚書。

記事ではExcelを使用していますが、基本的にはAccessのVBAなどでも同じように使用できます。

カタカナだけが対象なのでアルファベットや記号は変更されません。

スポンサーリンク

アルファベットなども変換したい場合

この記事のサンプルプログラムは、カタカナだけが対象となります。

もしアルファベット、数値、記号は、全部半角、カタカナは全角に変換したい場合は、以下の記事を参照してください。

VBA共通:半角カタカナを全角、全角英数、記号を半角に変換するユーザー定義関数
以前にも似たようなサンプルコードを作成して記事にしたけれど、今回は、半角のカタカナを全角に、全角の英字、数字、記号を半角に変換するユーザー定義関数のサンプルプログラムを作ったので覚書。"半角のカタカナを全角に、全角の英字、数字、記号を半角に...

サンプルプログラム概要

ユーザー定期関数なので引数として変換対象の文字列を受け取ります。

引数として受け取った文字列データを1文字ずつ取り出して半角カタカナかどうかを調べます。

半角カタカナかどうかを調べる方法としては、取り出した1文字のASCIIコード番号がが半角カタカナのASCIIコード範囲内の番号かどうかで判断しています。

もし半角カタカナだったら全角カタカナに変換し、半角カタカナでなければ何もせずに別で用意した空の文字列変数に代入します。

別に用意した変数に代入する際は、前の値を保持しつつ代入(順番にくっつけていく)して元の文字列の半角カタカナを全角カタカナに変換した文字列を新たに作りなおすイメージです。

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

以下に半角カタカナを全角カタカナに変更するユーザー定義関数のサンプルプログラムを記述する。

以下のコードを標準モジュールに貼り付けるます。

Public Function SBCStoDBCS(S As String) As String
Dim strTemp As String, S1 As String, S2 As String
Dim sWide As String

    strTemp = S
    Do While Len(strTemp) > 0
        S1 = Left(strTemp, 1)
            If Asc(S1) >= 161 And Asc(S1) <= 221 Then
                If Len(strTemp) > 1 Then
                    S2 = Mid(strTemp, 2, 1)
                    If Asc(S2) = 222 Or Asc(S2) = 223 Then
                        S1 = Left(strTemp, 2)
                        strTemp = Right(strTemp, Len(strTemp) - 1)
                    End If
                End If
                S1 = StrConv(S1, vbWide)
            End If

        sWide = sWide & S1
        strTemp = Right(strTemp, Len(strTemp) - 1)
    Loop

    SBCStoDBCS = sWide

End Function
  

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

作成したユーザー定義関数の使い方の例を以下に記載します。

Excelで使用する場合

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

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

例えば、=SBCStoDBCS(A1) という感じです。

もちろんVBAのプログラム中から呼び出して使用することも可能です。

Accessで使用する場合

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

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

コメント

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