2017-07-27 110 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

相关问题