Function SplitX(ByVal Expression As String, Optional ByVal Delimiter = " ") As String() Dim aResult() As String, aTemp() As String Dim i As Long, j As Long
i = -1 For j = 0 To UBound(aTemp) If LenB(aTemp(j)) <> 0 Then i = i + 1 aResult(i) = aTemp(j) End If Next
ReDim Preserve aResult(i) SplitX = aResult End Function
'*************** 方法一 Dim aa$, a1$, a2$, s Private Sub Command1_Click() aa = "asdfgdas fadsad" Do aa = Replace(aa, Space(2), Space(1)) Loop Until InStr(aa, Space(2)) = 0 s = Split(aa, " ") a1 = s(0) a2 = s(1) End Sub '****************方法二 Dim aa$, a1$, a2$, s Private Sub Command1_Click() aa = "asdfgdas fadsad" s = Split(aa, " ") a1 = s(0) a2 = s(UBound(s)) End Sub
'我的方法 Option ExplicitPrivate Sub Form_Load() Dim a As String Dim b() As String
a = "asdfgdas fadsad" b = Split(a, " ")
Dim i As Integer Dim t As String, s As String
For i = LBound(b) To UBound(b) If Not Trim(b(i)) = vbNullString Then t = t & vbCrLf & Trim(b(i)) s = s & vbCrLf & b(i) Next MsgBox t & vbCrLf & s End Sub
如果不考虑效率的话,做多次循环,每次都将2个空格折成1个空格a = " asdas asd " Do If InStr(1, a, " ") = 0 Then Exit Do a = Replace(a, " ", " ") Loop For Each x In Split(Trim(a), " ") Debug.Print x Next
Dim aResult() As String, aTemp() As String
Dim i As Long, j As Long
aTemp = Split(Expression, Delimiter)
ReDim aResult(UBound(aTemp))
i = -1
For j = 0 To UBound(aTemp)
If LenB(aTemp(j)) <> 0 Then
i = i + 1
aResult(i) = aTemp(j)
End If
Next
ReDim Preserve aResult(i)
SplitX = aResult
End Function
Dim aa$, a1$, a2$, s
Private Sub Command1_Click()
aa = "asdfgdas fadsad"
Do
aa = Replace(aa, Space(2), Space(1))
Loop Until InStr(aa, Space(2)) = 0
s = Split(aa, " ")
a1 = s(0)
a2 = s(1)
End Sub
'****************方法二
Dim aa$, a1$, a2$, s
Private Sub Command1_Click()
aa = "asdfgdas fadsad"
s = Split(aa, " ")
a1 = s(0)
a2 = s(UBound(s))
End Sub
Option ExplicitPrivate Sub Form_Load()
Dim a As String
Dim b() As String
a = "asdfgdas fadsad"
b = Split(a, " ")
Dim i As Integer
Dim t As String, s As String
For i = LBound(b) To UBound(b)
If Not Trim(b(i)) = vbNullString Then t = t & vbCrLf & Trim(b(i))
s = s & vbCrLf & b(i)
Next
MsgBox t & vbCrLf & s
End Sub
Do
If InStr(1, a, " ") = 0 Then Exit Do
a = Replace(a, " ", " ")
Loop
For Each x In Split(Trim(a), " ")
Debug.Print x
Next