- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
回復 13# GBKEE - Option Explicit
- Sub Ex() 'Split在字串中以指定的字元作分割傳回一維陣列
- Dim A As String, W, xi As Integer, i As Integer
- A = "1ABCD2ABCD3ABCD4ABCD"
- For xi = 2 To 6
- W = Split(A, Mid(A, xi, 1))
- For i = 0 To UBound(W)
- Debug.Print W(i) '在即時運算視窗可見
- Next
- ' MsgBox Join(W, ",")
- MsgBox "(For " & xi & " To 6)" & Chr(10) & Chr(13) & "(For i = 0 To " & UBound(W) & ")" & Chr(10) & Chr(13) & _
- " Split(" & A & ", Mid(A, " & xi & ", 1)) -> " & "'" & Mid(A, xi, 1) & "'" & _
- Chr(10) & Chr(13) & "Join(W, ', ') -> " & Join(W, ",")
- Next
- End Sub
- ' (For 2 to 6)
- ' (For i = 0 To 4)
- ' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,2,1)) -> 'A'
- ' Join(W,',') -> 1,BCD2,BCD3,BCD4,BCD
- '
- ' (For 3 to 6)
- ' (For i = 0 To 4)
- ' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,3,1)) -> 'B'
- ' Join(W,',') -> 1A,CD2A,CD3A,CD4A,CD
- '
- ' (For 4 to 6)
- ' (For i = 0 To 4)
- ' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,4,1)) -> 'C'
- ' Join(W,',') -> 1AB,D2AB,D3AB,D4AB,D
- '
- ' (For 5 to 6)
- ' (For i = 0 To 4) <--- 正確應為 For i = 0 To 3
- ' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,5,1)) -> 'D'
- ' Join(W,',') -> 1ABC,2ABC,3ABC,4ABC
- '
- ' (For 6 to 6)
- ' (For i = 0 To 1)
- ' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,6,1)) -> '2'
- ' Join(W,',') -> 1ABCD.ABCD3ABCD4ABCD
複製代碼 謝謝您的範例,簡明扼要。
經測試, For 5 to 6 的迴圈時,因該 A 字串尾端字元為 D,
且 Split(A, Mid(A,5,1)) 又為 D 時, UBound(W) 會判定為 4,
因為 W(4) = ""。 如果使用 UBound(W) 來做處理就會有 Bug 了。 |
|