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
是一样的,对此表示抱歉。我会编辑。