Accessのフォーム上にTELというテキストボックスがあり、その中には市外局番からはじまる電話番号が表示されています。
その近くにテキストボックスを配置して、TELの中から市外局番だけを取り出して表示したい(000-****-**** の000の部分だけ)のですが、プロパティのコントロールソースに書く関数のつくりかたが解りません。。
000の部分は3文字か4文字なので取りたい文字数は固定して指定できません。
Mid([TEL],1,Instr([TEL],"-"))
このように書いてみたのですが、正常に反映されません。
教えてください、お願いします。
No.1ベストアンサー
- 回答日時:
> Mid([TEL],1,Instr([TEL],"-"))
Mid関数でなくても、
Left([TEL],Instr([TEL],"-")-1)
では?
No.3
- 回答日時:
チクッと横から失礼・・・。
フォームに[TEL]が配置されて、市外局番を表示する[STD]も配置されているとします。
この場合、No1さんの回答でOKかと思います。
=Left([TEL],InStr(1,[TEL] & "-","-",1)-1)
ただ、空値対策ですが、[TEL]に "-"を常にアペンドしてもOKかと。
Left関数の引数がマイナスになる不具合は、これで回避されます。
[イミディエイト]
? vbTextCompare
1
なお、念のために Instr関数では vbTextCompare も指定しています。
補足:私ならば・・・・
Customer:
ID__KName______TEL
01__山田 太郎__0001-01-0001
02__山下 達郎__001-001-0001
=CutStr(DBLookup("TEL","Customer","ID=" & Forms("Customer").[Controls]("ID")),"-",1)
フォーム [Customer]で、市外局番を切り取って表示しています。
しかし、これは実に複雑です。
レコードソース=SELECT Customer.ID, Customer.KName, CutStr([TEL] & "","-",1) AS STD FROM Customer;
これならば、テキストボックス[市外局番]のレコードソース=STD で済みます。
これならば、[TEL]から市外局番を抜き出す作業をフォームで行う必要はありません。
CutStr([TEL],"-",1) AS STD_____________________Null 非対応
CutStr([TEL] & "","-",1) AS STD______________Null 対応
[イミディエイト]
? CutStr("111-222-333", "-", 1)
111
? CutStr("111-222-333", "-", 2)
222
? CutStr("111-222-333", "-", 3)
333
このように、私は文字列の切り出しを行う場合、全て以下の CutStr関数一つで対応しています。
逐一、Left関数、Instr関数で抜き出すか否かは、まあ、好みの問題かと思います。
適当に参考にされて下さい。
Public Function CutStr(ByVal TEXT As String, _
ByVal Separator As String, _
ByVal N As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & TEXT, Separator, , 0)
CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function
No.2
- 回答日時:
ゴメンナサイ。
Instr関数は、最初に検索スタート位置を入れなくてはなりません。
なので
=Left([TEL],Instr(1,[TEL],"-")-1)
と、しないとダメですね。
[TEL]に何も入っていない場合を考慮するなら、
=IIf(Nz([テキスト0],"")<>"",Left([テキスト0],InStr(1,[テキスト0],"-")-1),"")
Instr関数のヘルプでは、第一引数は省略可能と書かれているのに、
Instr([TEL],"-")
と第一引数を省略すると、エラーになってしまいます。
Accessだけなのかもしれませんが...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Word(ワード) ワードで、任意の文字の前に、通し番号をつけたいです。 2 2022/09/15 02:40
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- iPhone(アイフォーン) web上の電話番号リンクの桁区切りが、iPhoneだと特定電話番号でおかしくなるのを解決したい 1 2023/03/28 14:27
- Excel(エクセル) MID関数について 2 2022/04/22 09:13
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- 固定電話・IP電話・FAX 電話番号について 市外局番以外の数字から地域をある程度特定できますか? 5 2023/08/15 23:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
アクセスでテーブルの変更内容...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
Access 別フォームへの再クエ...
-
Access2002 フォームを閉じるた...
-
ACCESSで入力フォームをHTMLフ...
-
dlookup関数が使えない
-
AccessのCtrl+2の操作を自動化...
-
他フォームのチェックボックス...
-
accessの自動更新処理をできな...
-
Accessのフォームで作業領域を...
-
Access:サブフォームにクエリ...
-
アクセスのフォームのビューが...
-
Accessのフォームに表示...
-
ACCESSでのテキストボックスの...
-
Access2000で作ったバーコード...
-
Access フォームやレポートを作...
-
Accessフォームのテキストボッ...
-
ACCESSで、フォームのレコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフォーム上にレコード...
-
ACCESSのフォームからデータの...
-
アクセスのフォームのビューが...
-
選択したチェックボックスのみ...
-
アクセスでテーブルの変更内容...
-
accessの自動更新処理をできな...
-
Access 別フォームへの再クエ...
-
アクセスでの項目追加について...
-
Accessフォームのテキストボッ...
-
ACCESSで入力フォームをHTMLフ...
-
Access2002 フォームを閉じるた...
-
Access フォーム上でコンボボッ...
-
「メソッドまたはデータメンバ...
-
ADOでRecordsetオブジェクトを...
-
テキストボックス(アクセス)内...
-
Accessのフォームで作業領域を...
-
Accessのフォームに表示...
-
アクセス 0以外をカウントす...
-
テキストボックスの値をテーブ...
-
ACCESSで、フォームのレコード...
おすすめ情報