区切りなしの電話番号に適切な位置に区切り文字を挿入する関数
ユーザーが電話番号を入力する時、市外局番-市内局番-番号 と分けて入力してくれればいいですが、数字だけを入力する場合もあります。そんなとき、自動で適切に位置にハイフンを挿入してくれるといいですよね。しかし、市外局番は2桁のものから5桁のものまであるので、簡単にはできません。
難易度:
市外局番の一覧
掲示板に上記の質問があったので、市外局番について調べてみたら下記のページを発見しました。
一覧がWORDファイルかPDFファイルでダウンロードでできます。これをAccessのテーブルに取り込んだら、区切りなし電話番号から市外局番を取り出せそうです。
ExcelファイルかCSVファイルなら簡単にインポートできたのですが、、、
WORDファイルをダウンロードすると表になっていたので市外局番の列を選択して、Accessで作成しておいたテーブルに追加貼り付けでい意外と簡単に取り込めました。
この一覧の市外局番には重複がありましたが、フィールドを主キーにしておきましたので、貼付け時にエラーが出ますが無視してOKを押したら重複を除いて取り込めました。
あとは、テーブルの市外局番と区切りなし電話番号を比較して、市外局番の桁数を取得して、それももとに区切り文字で分割するコードを書くだけです。
利用方法
下記のリンクをクリックしてお使いのバージョンのサンプルファイルをダウンロードします。
ZIPファイルになっていますので、中に入ってるデータベースファイルを適当なフォルダーにコピーします。
関数を利用したいデータベースファイルから上記のファイルを参照設定すれば利用できます。
あるいは、ファイル内のテーブル「T_AreaCode」とモジュール「mdlSplitTelNum」をインポートします。
使用例
クエリのフィールド欄
分割電話番号: SplitTelNum([電話番号])
変換例
電話番号 | 電話番号1 |
---|---|
0114567890 | 011-456-7890 |
0499467890 | 04994-6-7890 |
0334567890 | 03-3456-7890 |
0538567890 | 0538-56-7890 |
09012345678 | 090-1234-5678 |
0120123123 | 0120-123123 |
区切り文字も空白にしたい場合は、
分割電話番号: SplitTelNum([電話番号], " ")
サンプルファイルが下記からダウンロードできます。
TelAreaCode_07.zip (Access 2007-2010 形式 - 547kb)
TelAreaCode.zip (Access 2002-2003 形式 - 543kb)
TelAreaCode_2k.zip (Access 2000 形式 - 543kb)
追記: 次の記事でExcelやWordでも(もちろんAccessでも)使えて、かつ、高速に動作する関数を紹介していますので、そちらの方を利用されることをお薦めします。