又卡在陣列上搞不懂...
目前有一會變動字數的字串:"sdshjdshj;kddjskdjskdjksjk;sdsdsdsdsds;dsddfdsghhhgj;"
想要抓";"在字串裡的位置,當它出現時將其填入另一陣列,像y(1)=10、y(2)=27
y(1)=10是指第1個";"在10的位置
y(2)=27是指第2個";"在27的位置
------------------------------------
Dim x() As String
Dim y(1 To 4) As Integer
Dim i As Integer
ReDim x(1 To Len(record))
For i = 1 To Len(record)
x(i) = Mid(record, i, 1)
If x(i) = ";" Then
y(j) = i
End If
Next i
------------------------------------
可是在我想把抓出來位置填入y(1)、y(2)....
卡住不知道該怎麼寫?

抓到第4個";"位置後跳出迴圈
Dim x As String
Dim y(1 To 4) As Integer
Dim i As Integer
ReDim x(1 To Len(record))
j = 1
For i = 1 To Len(record)
x(i) = Mid(record, i, 1)
If j > 4 Then
GoTo cut01
Else
If x(i) = ";" Then
y(j) = i
j = j + 1
End If
End If
Next i
cut01: cutposition=y(4)
Mystique Hsiao wrote:
可將程式碼中的數量 4 用下列公式替換(理論上應該可行):
LEN(Record)-LEN(SUBSTITUTE(Record,";",""))...(恕刪)
實際上也沒問題的,不過如果要在VBA 使用,需改成這樣
Len(Record) - Len(WorksheetFunction.Substitute(Record, ";", ""))
TalktoYou2016 wrote:
抓到第4個";"位置後跳出迴圈...(恕刪)
您那17行程式碼,改成這樣也可以
請參考,重點在 SPLIT()
temparray = Split(Record, ";")
Dim y() As Integer: ReDim y(UBound(temparray))
For i = 0 To UBound(temparray) - 1
y(i + 1) = y(i) + Len(temparray(i)) + 1
Next
Private Sub Command1_Click()
Dim s As String, i As Long, a As Integer, y() As Long
s = "sdshjdshj;kddjskdjskdjksjk;sdsdsdsdsds;dsddfdsghhhgj;"
For i = 1 To Len(s)
If Mid(s, i, 1) = ";" Then
ReDim Preserve y(a)
y(a) = i
a = a + 1
End If
Next
End Sub
'方法二
Private Sub Command2_Click()
Dim s As String, st() As String, i As Long
s = "sdshjdshj;kddjskdjskdjksjk;sdsdsdsdsds;dsddfdsghhhgj;"
st = Split(s, ";")
ReDim y(1 To UBound(st)) As Long
For i = 1 To UBound(y)
y(i) = Len(st(i - 1)) + 1
If i > 1 Then y(i) = y(i) + y(i - 1)
Next
End Sub
內文搜尋

X