半角カタカナを全角カタカナに、全角英数字を半角に変換するユーザー定義関数を作成したので覚書きしておく。
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コードについては、以下を参考にしてください。
ユーザー定義関数の使い方
作成したユーザー定義関数の使い方の例を以下に記載します。 基本的に通常の組み込み関数と同じ使い方ができます。
Excelで使用する場合
ワークシートのセルに式として =myStrConv("変換したい文字列") と入力すればOKです。
"変換したい文字列"部分は文字列が入ったセル番地を直接指定してもOKです。
例えば、=myStrConv(A1) という感じです。 もちろんVBAのプログラム中から呼び出して使用することも可能です。
Accessで使用する場合
Accessのクエリーなどで使用する場合は、式として myStrConv([フィールド名]) で良いです。
Excelで使用する場合と同様に標準の組み込み関数と同じように使用することができます。
半角、全角変換の関連記事
半角、全角変換に関連する他の記事のリンクを以下に貼っておきますので参考にしてください。
コメント
すっきりしたコードに感銘しました。
私のホームページでも紹介させていただきました。
http://makoto-watanabe.main.jp/vba_character.html#myStrConv
貴サイトへのリンクを明示しています。
ご了解を、お願いいたします。
貴重なノウハウを公開いただき、感謝いたします。
了解いたしました。
問題ありません。