Private Sub Command1_Click() Dim n As Integer Dim Flag As Boolean Dim a() As String Dim Str As String Dim i As Integer Dim x As String Flag = False x = Text1.Text n = -1 For i = 1 To Len(x) If Mid(x, i, 1) = "a" Or Mid(x, i, 1) = "b" Then If Flag = True Then ReDim Preserve a(n + 1) As String a(n + 1) = Str Str = "" Flag = False n = n + 1 Str = Str & Mid(x, i, 1) Else Str = Str & Mid(x, i, 1)
End If Else Flag = True Str = Str & Mid(x, i, 1) If i = Len(x) Then ReDim Preserve a(n + 1) As String a(n + 1) = Str End If End If Next Debug.Print a(0) Debug.Print a(1) Debug.Print a(2)
End Sub
Private Sub Command1_Click() Dim s As String Dim Temp As String Dim a() As String Dim i As Long Dim Index As Long
s = "a23b40a368b588b398b2"
Index = -1
For i = 1 To Len(s) Temp = Mid(s, i, 1) If Asc(Temp) < 48 Or Asc(Temp) > 57 Then Index = Index + 1 ReDim Preserve a(Index) a(Index) = Temp Else a(Index) = a(Index) & Temp End If Next i End Sub
我怎么就那么麻烦呢? 还是 weiweiplay(虚幻) 厉害,呵呵 没有想到简便方法
'自定义函数作用:提取当前单元格中的数字 Dim i, j As Integer Dim mylen As IntegerDim mystr As Stringmylen = Len(rng)For i = 1 To mylen mystr = Mid(rng, i, 1) If Asc(mystr) >= 48 And Asc(mystr) <= 57 Then getnumber = getnumber & mystr Else sChr = mystr j = j + 1 End If If i = mylen Then Exit Function mystr = Mid(rng, i + 1, 1) If Asc(mystr) >= 48 And Asc(mystr) <= 57 Then Else ReDim Preserve Arr(j) Arr(j) = sChr & getnumber getnumber = "" End If Next i
Dim n As Integer
Dim Flag As Boolean
Dim a() As String
Dim Str As String
Dim i As Integer
Dim x As String
Flag = False
x = Text1.Text
n = -1
For i = 1 To Len(x)
If Mid(x, i, 1) = "a" Or Mid(x, i, 1) = "b" Then
If Flag = True Then
ReDim Preserve a(n + 1) As String
a(n + 1) = Str
Str = ""
Flag = False
n = n + 1
Str = Str & Mid(x, i, 1)
Else
Str = Str & Mid(x, i, 1)
End If
Else
Flag = True
Str = Str & Mid(x, i, 1)
If i = Len(x) Then
ReDim Preserve a(n + 1) As String
a(n + 1) = Str
End If
End If
Next
Debug.Print a(0)
Debug.Print a(1)
Debug.Print a(2)
End Sub
Dim s As String
Dim Temp As String
Dim a() As String
Dim i As Long
Dim Index As Long
s = "a23b40a368b588b398b2"
Index = -1
For i = 1 To Len(s)
Temp = Mid(s, i, 1)
If Asc(Temp) < 48 Or Asc(Temp) > 57 Then
Index = Index + 1
ReDim Preserve a(Index)
a(Index) = Temp
Else
a(Index) = a(Index) & Temp
End If
Next i
End Sub
还是 weiweiplay(虚幻) 厉害,呵呵
没有想到简便方法
Dim i, j As Integer
Dim mylen As IntegerDim mystr As Stringmylen = Len(rng)For i = 1 To mylen mystr = Mid(rng, i, 1) If Asc(mystr) >= 48 And Asc(mystr) <= 57 Then
getnumber = getnumber & mystr
Else
sChr = mystr
j = j + 1
End If
If i = mylen Then Exit Function
mystr = Mid(rng, i + 1, 1)
If Asc(mystr) >= 48 And Asc(mystr) <= 57 Then
Else
ReDim Preserve Arr(j)
Arr(j) = sChr & getnumber
getnumber = ""
End If
Next i
代码是长了点,但一次性解决了我的问题。给40
weiweiplay(虚幻):
代码是简单了点,但还需要继续完善,才能达到我所要的结果。给8
HungryBoy(饥饿的男孩):
代码也是简单了点,但编译不通过,我本人又没有时间替你修改代码。给2重在参与,本来一次性解决的要给50分的。