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

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

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

“半角のカタカナを全角に、全角の英字、数字、記号を半角に”と書きましたが、実際には、半角では困る文字を全角に、全角では困る文字を半角に変換するユーザー定義関数。

ExcelのVBAでもAccessのVBAでも使用できます。

ユーザー定義関数の概要

これまで全角、半角変換に関するプログラムはASCIIコードを使用して判別、変換というロジックでしたが、今回はだいぶ異なります。

まず2つの文字列変数を用意して1つの変数には”全角から半角に変換したい文字”を羅列した文字列を代入しておきます。

同様に”半角から全角に変換したい文字列”を羅列した文字列をもう1つの変数に代入しておきます。

あとは引数として受け取った文字列の1文字1文字を上記2つの変数に代入されている文字列の1文字1文字と比較して変換対象なら変換するという感じです。

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

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

ユーザー定義関数の使用例

作成したユーザー定義関数をプログラム中から呼び出して使用する方法を以下に記載します。

ユーザー定義関数を呼び出して使用するサンプルプログラムの例

実行すると以下のようにデバックウィンドウに変換された文字列が表示されます。

ABCdef%&'()*+,-123ャュョッアイウエ

プログラムからだけでなく、AccessやExcelの組み込み関数と同じように使用することもできます。

基本的には、ユーザー定義関数の中で使用されている関数(StrConv、Mid、Left、Right)を持っている言語なら同じものを作れると思います。

VBScript には、「StrConv」関数がないため実現できなさそうですが、「BASP21」を組み込んであげれば「BASP21」側に同じ機能を持つ関数が用意されていて利用できるため、VBScript でも実現できると思います。

「BASP21」の詳細は、こちらをどうぞ。

コメント

  1. ken2 より:

    初めましてこんにちは。VBA勉強中のモノです。
    文字列変換について調べていたら、こちらのサンプルを見つけました。
    自分が探していたコードサンプルとして非常に近いもので、また
    変換部分のコードもわかりやすく、ぜひ使わせていただきたいと思いました。
    ですが、標準モジュールに貼付け、実行してみたのですが、
    エクセルから何も反応がありませんでした・・・ただ貼り付け、実行しても
    ダメなのでしょうか?
    また、もし指定のセルに対して変換を行う場合は
    subプロシージャでどう指定すればよろしいでしょう?
    長文すみません。よろしければご教授いただけないでしょうか。
    よろしくお願いします。

  2. ちゃちゃ より:

    ほぼ頂いた内容にて処理できました。ただ、カタカナのタが抜けているように思いました。
    ありがとうございました。