[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『市外局番に自動ハイフン』(まるこ)
固定電話の市外局番に自動ハイフンをユーザーフォーム上でふりたいので、くみました。
2桁、3桁まで対応してますが、4桁、5桁にも対応したいのですが、なにかありますか。よろしくお願いします。
Private Sub TextBox固定電話_Change()
Dim tempresa_tel As String, tempresa_tel2 As String, tempresa_tel3 As String Dim i As Integer, j As Integer, n As Integer Dim ddd1 As String, ddd2 As String tempresa_tel = TextBox固定電話.Value TextBox固定電話.MaxLength = 12
i = Len(tempresa_tel)
For j = 1 To i If IsNumeric(Mid(tempresa_tel, j, 1)) Then tempresa_tel2 = tempresa_tel2 & Mid(tempresa_tel, j, 1) End If Next
i = Len(tempresa_tel2)
For j = 1 To i tempresa_tel3 = tempresa_tel3 & Mid(tempresa_tel2, j, 1) ddd1 = Left(tempresa_tel, 2) If ddd1 = "03" Or ddd1 = "06" Then If j = 3 Or j = 7 Then n = Len(tempresa_tel3) - 1 tempresa_tel3 = Left(tempresa_tel3, n) & "-" & Right(tempresa_tel3, 1) End If ElseIf ddd1 <> "03" Or ddd1 <> "06" Then If j = 4 Or j = 7 Then n = Len(tempresa_tel3) - 1 tempresa_tel3 = Left(tempresa_tel3, n) & "-" & Right(tempresa_tel3, 1) End If End If Next
TextBox固定電話.Value = tempresa_tel3
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows8 >
幾つかの関数を提供していますが、実際には PhoneNumber 関数ひとつで事足ります。
AddinBox/Tips29: JavaScript で電話番号(局番)の検証/編集
http://addinbox.sakura.ne.jp/Excel_Tips29.htm
VBA用ソースコード閲覧
http://addinbox.sakura.ne.jp/AreaCode/ColorSource_VBA.htm
リンク『ダウンロード』の場所に、VBA 用インポートモジュールを用意していますので、
それをダウンロードして自ブックにインポートすれば、すぐに使えます。
尚、他にアドインブックを用意していますし、
kt関数アドイン( ktPhoneNumber ) / kt電話郵便アドイン( ktTelEdit )でも
同じ機能を提供しています。
(AddinBox 角田) 2020/08/25(火) 11:50
Private Sub TextBox固定電話_Exit((ByVal Cancel As MSForms.ReturnBoolean)
Dim Resp As Variant
Dim TelNumber As String
If (TextBox固定電話.Value = "") Then
Exit Sub
End If
' ハイフン付き入力の場合に、区切り位置が正しいかチェック
Resp = PhoneNumber(TextBox固定電話.Value, "V")
Select Case Resp
Case "0"
' 区切り位置不正等、ハイフン編集し直して更新
Case "1"
' 区切り位置 正常
Exit Sub
Case "2"
' 数字のみ入力⇒ハイフン編集
End Select
TelNumber = Replace(TextBox固定電話.Value, "-", "")
TelNumber = Replace(TelNumber, "(", "")
TelNumber = Replace(TelNumber, ")", "")
' ハイフン編集
Resp = PhoneNumber(TextBox固定電話.Value, "F1")
If (Resp = "Phone Error") Then
Beep
Cancel = True
Exit Sub
Else
TextBox固定電話.Value = Resp
End Sub
End Sub
(AddinBox 角田) 2020/08/25(火) 12:16
Private Sub TextBox固定電話_Exit((ByVal Cancel As MSForms.ReturnBoolean)
左括弧が余計
Else
TextBox固定電話.Value = Resp
End Sub ← End If
End Sub
(AddinBox 角田) 2020/08/25(火) 12:22
Private Sub TextBox固定電話_Change() Dim tempresa_tel As String, tempresa_tel2 As String, tempresa_tel3 As String Dim i As Integer, n As Integer Dim ddd1 As String
tempresa_tel = TextBox固定電話.Value
For i = 1 To Len(tempresa_tel) If IsNumeric(Mid(tempresa_tel, i, 1)) Then tempresa_tel2 = tempresa_tel2 & Mid(tempresa_tel, i, 1) End If Next i
With Sheets("Sheet1") n = Len(tempresa_tel2) For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row ddd1 = .Cells(i, "A").Text If Len(ddd1) < n Then If tempresa_tel2 Like ddd1 & "*" Then If 6 < n Then tempresa_tel3 = ddd1 & "-" & Mid(tempresa_tel2, Len(ddd1) + 1, 6 - Len(ddd1)) & "-" & Mid(tempresa_tel2, 7) Else tempresa_tel3 = ddd1 & "-" & Mid(tempresa_tel2, Len(ddd1) + 1) End If TextBox固定電話.Value = tempresa_tel3 Exit For End If End If Next i End With End Sub (???) 2020/08/25(火) 14:04
[ 09934x xxxx ]
0993-40-FGHJ
0993-41-FGHJ
099-343-FGHJ
099-345-FGHJ
099-347-FGHJ
0993-49-FGHJ
0993 ⇒ 099 の順でチェックしても、
全部が[0993-4x-xxxx]の方でヒットしてしまいます。
(AddinBox 角田) 2020/08/25(火) 15:59
A列定義だけでは鹿児島対応できないので、6桁判定にして、B列で桁数定義するとかしないと、完全対応できないですね。
(???) 2020/08/25(火) 16:34
上手くいったのか、いかなかったのか・・・
反応を貰えるのが回答者の励みになるんだけど・・・
もう無くなったけど、エクセルファンクラブの頃から、
何も手を入れなくても、直ぐにそのまま使えるサンプルコードを
提示すると、何の音沙汰も無く過去ログへ消えていくことが多いよね・・・
すみません、単なる愚痴です。
(AddinBox 角田) 2020/08/30(日) 17:29
角田さんのサイトのAddinBox、以前よりいろいろと参考にさせていただいていました。
こちらで直接回答されているのに今気が付き、ちょっと感動してついコメントしてしまいました。
多くの有用な情報を提供いただいて助かったことが多くあり、本当にありがとうございました。
質問に関係ないお話で失礼いたしましたm(_ _)m
(QS) 2020/08/30(日) 17:44
そういった声が聞こえるのが、続ける励みになります♪
(AddinBox 角田) 2020/08/30(日) 17:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.