MS Access Tips/Sample and VBA and Blog customize etc...

区切りなしの電話番号に適切な位置に区切り文字を挿入する関数(汎用版)

タイトル画像

前の記事で電話番号に区切り文字を挿入する関数を紹介しましたが、Accessでしか使えないものでしたが、ExcelやWordなどでも共通で使える関数を作成しましたので公開します。

難易度:

概要

前記事の関数は総務省が公開している市外局番の一覧をダウンロードしてAccessのテーブルに取り込んでそれをもとに市外局番の桁数を取得するというものでした。で、テーブルのデータを見てると388件と大した量でなかったので、テーブルにしなくてもコード内で定数などに格納して検索してもできそうな気がしてきました。

で、作成してみたら、意外とシンプルでかつAccess版より高速なものができました。ExcelやWordなどでも使えて高速なので、前の関数はもう用済みですね。

ただ、定数データを作成するときは、クエリを使って簡単に生成できたので、テーブルデータは役にはたちました。

SplitTelNumber関数

下記の関数をコピーして標準モジュールに貼り付けてください。

2017/06/01追記: コードに間違いがありましたので修正しました。

2017/07/19 追記: コードを改修しました。改修内容は こちらを参照

使用例

追記

下記で、総務省のサイトの市外局番一覧が更新されてたら、データをダウンロードして、関数に取り込んでアップデイトするツールを紹介していますので、ご利用ください。

電話番号の適切な位置に区切り文字を挿入する関数+市外局番データ自動アップデイトツール

拍手する

-2 Comments

Hachi56 says..."ありがとうございました。"

hatena様
ピンポイントの解決策で大変助かりました!ありがとうございました。
スキルのなさやコピー方法の不手際で時間がかかりましたが、うまくいきました。   

その際、****-**-****形式がうまくいかなかったので、下記の記述

ElseIf InStr(1, AreaCode4, TelNo, vbBinaryCompare) > 0 Then
SplitTelNumber = _
Format(Mid(TelNo, 2, 3), "&&&&" & Demiliter & "&&" & Demiliter & "&&&&")



ElseIf InStr(1, AreaCode4, Mid(TelNo, 2, 3), vbBinaryCompare) > 0 Then
SplitTelNumber = _
Format(TelNo, "&&&&" & Demiliter & "&&" & Demiliter & "&&&&")
のように変更しました(前後の記述を参考に)。
問題ないですよね?

2017.05.31 21:12 | URL | #2XwI6hG6 [edit]
hatena says..."re:ありがとうございました。"

Hachi56 様
> その際、****-**-****形式がうまくいかなかったので、下記の記述
中略
> のように変更しました(前後の記述を参考に)。
> 問題ないですよね?

あっ、記事のコード間違ってますね。そちらのコードが正しいです。
記事の方のコードを正しいものに修正しておきました。
ご指摘ありがとうございました。

2017.06.01 02:27 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/503-50e30e53
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。