2017-07-27 109 views
-1

整體的目標是在逗號之間返回字符,並在另一段代碼中使用它們中的每一個。如果有人知道更好的做法,請告訴我。VBA:爲什麼我的FOR循環沒有返回任何東西?

問題:

我試圖找到字符串中的逗號的位置。

字符串:

Dim st As String 
st = "1642377,001642381,010301642379" 

我嘗試:

For pos = 1 To Len(st) 

    If Mid(st, pos, 1) = "," Then 

     MsgBox ("Position of comma:" & pos) 

    End If 

Next 

目前返回:

代碼不返回任何東西。 If條件未返回true。

預期結果:

MsgBox應彈出兩次,顯示逗號的每個時間的位置。

+0

有人給你一個更好的方式做到這一點,但我猜你的循環沒有運行......你的代碼顯示'對於pos = 1到len(st)',但什麼是'st'?你不會顯示它是如何聲明的或者它是多久的......如果你逐步瞭解代碼,你應該能夠看到發生了什麼。 – OpiesDad

+0

@OpiesDad woops,對不起。 'st'就是字符串。 – DarthVoid

+0

如果您想了解您的循環無法正常工作的原因,請發佈聲明和分配的完整子文件。見[mcve]。如果你還沒有使用['Option Explicit'](https://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84%29.aspx),請使用[Option Explicit']。 - 很可能,你會在這個過程中自己發現問題。 – Andre

回答

2

使用分割功能。它返回一個字符串數組

Dim parts() As String, p As Variant 

parts = Split("1642377,001642381,010301642379", ",") 
For Each p In parts 
    Debug.Print p 
Next 

打印

1642377 
001642381 
010301642379 

您正在使用2倍不同的值:stMe.Text585.Value。你的意思是在兩個地方使用st?如果我這樣做,代碼工作,它返回位置8和18.

+0

'st'和'Me.Text585.Value'是一樣的東西,對不起。我將編輯。 – DarthVoid

相關問題