VBA:为什么我的FOR循环没有返回任何东西?
问题描述:
整体的目标是在逗号之间返回字符,并在另一段代码中使用它们中的每一个。如果有人知道更好的做法,请告诉我。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
应弹出两次,显示逗号的每个时间的位置。
答
使用分割功能。它返回一个字符串数组
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倍不同的值:st
和Me.Text585.Value
。你的意思是在两个地方使用st
?如果我这样做,代码工作,它返回位置8和18.
+0
'st'和'Me.Text585.Value'是一样的东西,对不起。我将编辑。 – DarthVoid
有人给你一个更好的方式做到这一点,但我猜你的循环没有运行......你的代码显示'对于pos = 1到len(st)',但什么是'st'?你不会显示它是如何声明的或者它是多久的......如果你逐步了解代码,你应该能够看到发生了什么。 – OpiesDad
@OpiesDad woops,对不起。 'st'就是字符串。 – DarthVoid
如果您想了解您的循环无法正常工作的原因,请发布声明和分配的完整子文件。见[mcve]。如果你还没有使用['Option Explicit'](https://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84%29.aspx),请使用[Option Explicit']。 - 很可能,你会在这个过程中自己发现问题。 – Andre