xx-xxxx-xxxx=>(xx)xxxx-xxxx
xxx-xxx-xxxx=>(xxx)xxx-xxxx
xxxx-xx-xxxx=>(xxxx)xx-xxxx
ということであれば・・・。
? Format(CutStr("00-1111-2222","-",1),"(00)") & CutStr("00-1111-2222", "-", 2, 3)
(00)1111-2222
? Format(CutStr("000-111-2222","-",1),"(000)") & CutStr("000-111-2222", "-", 2, 3)
(000)111-2222
? Format(CutStr("0000-11-2222","-",1),"(0000)") & CutStr("0000-11-2222", "-", 2, 3)
(0000)11-2222
Format()の2番目の引数を可変にすればOK。
? Format(CutStr("00-1111-2222","-",1),"(" & String(Instr(1, "00-1111-2222", "-") - 1,"0") &")") & CutStr("000-111-2222", "-", 2, 3)
(00)111-2222
? Format(CutStr("000-111-2222","-",1),"(" & String(Instr(1, "000-111-2222", "-") - 1,"0") &")") & CutStr("000-111-2222", "-", 2, 3)
(000)111-2222
? Format(CutStr("0000-11-2222","-",1),"(" & String(Instr(1, "0000-11-2222", "-") - 1,"0") &")") & CutStr("0000-11-2222", "-", 2, 3)
(0000)11-2222
なお、次の CutStr関数をモジュールに追加する必要があります。
Public Function CutStr(ByVal Text As String,
ByVal Separator As String,
ByVal N As Integer,
Optional M As Integer) As String
Dim strDatas() As String
strDatas = Split("" & Separator & Text, Separator, , 0)
If M > 0 Then
CutStr = strDatas(N * Abs(N <= UBound(strDatas))) & _
Separator & strDatas(M * Abs(M <= UBound(strDatas)))
Else
CutStr = strDatas(N * Abs(N <= UBound(strDatas)))
End If
End Function
■利用方法
CutStr("00-1111-2222","-",1)・・・・"-"で分割した1番目を戻す。
CutStr("00-1111-2222","-",2, 3)・・・"-"で分割した2番目と3番目とを戻す。
※複数戻す時は、"-"も含む。
お礼
f_a_007 さん 何度も、親切に有難う御座いました。 wdを置き換えたら出来ました。 大変助かります、有難う御座います。