標題:
[發問]
變數加編號
[打印本頁]
作者:
swede
時間:
2012-2-12 21:07
標題:
變數加編號
請問各位高手
我以Mid函數取得字串並定義為adate,adate含有多個左括號,現欲取得每一個左括號的位置:
PL1 = InStr(adate, "(")
For i = 2 To 10
j = i - 1
PLi = InStr(1 + PRj, adate, "(")
Next
但上述程式碼無法取得左括號的位置,例如字串中第二個左括號PL2,請問應朝甚麼方向改寫?謝謝
作者:
register313
時間:
2012-2-12 22:21
回復
1#
swede
Sub ZZ()
'第1個(的位置放在ARR(1),第2個(的位置放在ARR(2)...
Dim ARR(10) '至多可找10個"("
ARR(1) = InStr(1, adate, "(")
For I = 2 To 100 '字串至多100字元
X = InStr(ARR(I - 1) + 1, adate, "(")
If X <> 0 Then
ARR(I) = X
Cells(I, "B") = ARR(I)
Else: End
End If
Next
End Sub
複製代碼
作者:
Hsieh
時間:
2012-2-12 22:30
回復
1#
swede
s = 1
For i = 1 To Len(adate) - Len(Replace(adate, "(", ""))
k = InStr(s, adate, "(")
MsgBox k
s = k + 1
Next
作者:
swede
時間:
2012-2-13 23:04
感謝兩位回覆,因為要取得每一個左括號的位置,所以register313 的寫法比較符合我需要的,謝謝。
作者:
GBKEE
時間:
2012-2-14 08:33
回復
1#
swede
Option Explicit
Sub Ex()
Dim xi As Integer, S
For xi = 1 To Len(adate)
If Mid(adate, xi, 1) = "(" Then
S = IIf(S <> "", S & "," & xi, xi)
End If
Next
If S <> "" Then MsgBox S
End Sub
複製代碼
作者:
swede
時間:
2012-2-18 23:44
感謝GBKEE 提供另外寫法, 我會試試看
作者:
Hsieh
時間:
2012-2-19 10:29
本帖最後由 Hsieh 於 2012-2-19 10:31 編輯
回復
4#
swede
只對括號數量做循環,減少迴圈數
同樣是傳回所有左括號的位置
應用如下
Sub nn()
Dim Ar()
adate = [A1]
s = 1
For i = 1 To Len(adate) - Len(Replace(adate, "(", ""))
k = InStr(s, adate, "(")
ReDim Preserve Ar(i - 1)
Ar(i - 1) = k
s = k + 1
Next
If InStr(adate, "(") > 0 Then MsgBox Join(Ar, ",") Else MsgBox "不含("
End Sub
複製代碼
[attach]9654[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)