Board logo

標題: [發問] 變數加編號 [打印本頁]

作者: 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
  1. Sub ZZ()
  2. '第1個(的位置放在ARR(1),第2個(的位置放在ARR(2)...
  3. Dim ARR(10)                              '至多可找10個"("
  4. ARR(1) = InStr(1, adate, "(")
  5. For I = 2 To 100                         '字串至多100字元
  6.   X = InStr(ARR(I - 1) + 1, adate, "(")
  7.   If X <> 0 Then
  8.      ARR(I) = X
  9.      Cells(I, "B") = ARR(I)
  10.   Else:     End
  11.   End If
  12. Next
  13. 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
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xi As Integer, S
  4.     For xi = 1 To Len(adate)
  5.         If Mid(adate, xi, 1) = "(" Then
  6.         S = IIf(S <> "", S & "," & xi, xi)
  7.         End If
  8.     Next
  9.     If S <> "" Then MsgBox S
  10. End Sub
複製代碼

作者: swede    時間: 2012-2-18 23:44

感謝GBKEE 提供另外寫法, 我會試試看
作者: Hsieh    時間: 2012-2-19 10:29

本帖最後由 Hsieh 於 2012-2-19 10:31 編輯

回復 4# swede
只對括號數量做循環,減少迴圈數
同樣是傳回所有左括號的位置
應用如下
  1. Sub nn()
  2. Dim Ar()
  3. adate = [A1]
  4. s = 1
  5. For i = 1 To Len(adate) - Len(Replace(adate, "(", ""))
  6. k = InStr(s, adate, "(")
  7.   ReDim Preserve Ar(i - 1)
  8.   Ar(i - 1) = k
  9.   s = k + 1
  10. Next
  11. If InStr(adate, "(") > 0 Then MsgBox Join(Ar, ",") Else MsgBox "不含("
  12. End Sub
複製代碼
[attach]9654[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)