【问题标题】:Why Am I getting Variable Undefined in VBA For Each Loop为什么我在 VBA 中为每个循环获取未定义的变量
【发布时间】:2014-09-24 18:21:22
【问题描述】:

我从 Stackoverflow 获得了大量答案,我非常感谢各位专家提供的所有信息!这是我第一次提出问题-非常感谢。

我在大型 Excel 2010 工作簿的后端运行各种 VBA 程序,我完全被当前的问题难住了。在一个模块中,我有一个带有 For Each 循环的公共子程序,该循环遍历一个变量,该变量在工作表中加载了一系列字符串值。

当我运行这个循环时,我要么立即得到一个编译错误“变量未定义”,并且每个变量的 都被突出显示,要么程序运行但循环没有结束。我已经在循环本身中注释了所有内容,但我仍然遇到这个问题。当循环运行时,我看到字符串值被正确检索到 for each 变量中。如果我注释掉循环,那么子程序将毫无问题地运行。

以下是我要明确的:

Dim showWord as String
showWord = ""
For Each thisWord In allWords
     'showWord = CStr(thisWord)
     'MsgBox showWord
Next x

现在我在不同模块的其他地方有这个完全相同的循环,它总是运行没有问题。我确实更改了每个变量和变体变量的名称,但就是这样。

有人可以帮我弄清楚这里发生了什么吗?

谢谢。

【问题讨论】:

  • 愚蠢的问题:你是否已经在代码前面定义了thisWordallWords

标签: vba loops excel


【解决方案1】:

您的循环不会结束,因为 Next x 中的变量必须与您正在循环的变量相同,例如 Next ThisWord 并且您必须声明 allWords

Dim showWord as String
showWord = ""

For Each thisWord In allWords
    ....
Next thisWord

【讨论】:

  • 好收获!原始响应者完全错过了这一点(而且似乎是 OP!)。
【解决方案2】:

很确定你没有定义你的变量 allWords,如下

Dim showWord as String
showWord = ""

dim allWords as (wtv)
allWords = (something)

'if not allWords is nothing then
  For Each thisWord In allWords
     'showWord = CStr(thisWord)
     'MsgBox showWord
  Next x
'end if

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多