Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access VBA:为什么不是';我的循环没有返回任何东西吗?_Ms Access_Vba - Fatal编程技术网

Ms access VBA:为什么不是';我的循环没有返回任何东西吗?

Ms access VBA:为什么不是';我的循环没有返回任何东西吗?,ms-access,vba,Ms Access,Vba,总体目标是返回逗号之间的字符,并在另一段代码中使用它们。如果有人知道一个更好的方法,请告诉我 问题: Dim st As String st = "1642377,001642381,010301642379" 我试图找到字符串中逗号的位置 字符串: Dim st As String st = "1642377,001642381,010301642379" 我的尝试: For pos = 1 To Len(st) If Mid(st, pos, 1) = "," Then

总体目标是返回逗号之间的字符,并在另一段代码中使用它们。如果有人知道一个更好的方法,请告诉我

问题:

Dim st As String
st = "1642377,001642381,010301642379"
我试图找到字符串中逗号的位置

字符串:

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
当前正在返回:

For pos = 1 To Len(st)

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

         MsgBox ("Position of comma:" & pos)

     End If

 Next
代码不返回任何内容。如果条件未返回true,则返回

预期结果:

For pos = 1 To Len(st)

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

         MsgBox ("Position of comma:" & pos)

     End If

 Next

一个
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


您正在使用两个不同的值:
st
Me.Text585.Value
。你的意思是在这两个地方使用
st
?如果我这样做,代码会工作,并返回位置8和18。

有人给了你更好的方法,但我猜你的循环根本没有运行……你的代码显示pos=1到len(st)
,但是什么是
st
?您不显示它是如何声明的,也不显示它是多长时间的……如果您单步执行代码,您应该能够看到发生了什么。@OpiesDad woops,抱歉
st
只是一个字符串。如果您想找出循环不起作用的原因,请发布一个包含声明和赋值的完整子循环。看见如果你还没用,就用吧最有可能的是,您自己会发现问题所在。@Andre这是整个sub。我在顶部有Option Explicit。按照您所说的,您提供的代码将无法运行。对于1,您声明您有
Option Explicit
,但您没有声明
st
pos
,因此,您必须至少有一个
Dim
声明,您没有向我们展示。对于2,无论您声明的是什么,行
st=164237700164381010301642379
都将不起作用,因为如果它是一个字符串,则需要在数字周围添加
,如果您没有
,则您提供的行将出错。正如Andre所说,如果你想知道循环为什么不工作,你需要提供完整的代码。
st
Me.Text585.Value
是一样的,对此表示抱歉。我会编辑。