为什么在VBA中每个循环都有未定义的变量

为什么在VBA中每个循环都有未定义的变量,vba,loops,excel,Vba,Loops,Excel,我从Stackoverflow得到了大量的答案,我非常感谢各位专家提供的所有信息!这是我第一次问问题,谢谢 我正在一个大型Excel 2010工作簿的后端运行各种VBA程序,我完全被当前问题难住了。在一个模块中,我有一个带有For-Each循环的public sub,该循环遍历一个变量,该变量在工作表中加载了一系列字符串值 当我运行这个循环时,我要么得到一个即时编译错误“Variable not defined”,并突出显示每个变量的值,要么程序运行,但循环没有结束。我已经逐字逐句地注释了循环本

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

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

当我运行这个循环时,我要么得到一个即时编译错误“Variable not defined”,并突出显示每个变量的值,要么程序运行,但循环没有结束。我已经逐字逐句地注释了循环本身中的所有内容,我仍然理解这个问题。当循环运行时,我看到字符串值被正确地检索到for each变量中。如果我注释掉了循环,那么子循环运行时没有任何问题

以下是我必须澄清的:

Dim showWord as String
showWord = ""
For Each thisWord In allWords
     'showWord = CStr(thisWord)
     'MsgBox showWord
Next x
现在,我在另一个模块的其他地方有了完全相同的循环,它总是毫无问题地运行。我确实更改了每个变量的变量名和变量名,但仅此而已

有人能帮我弄清楚这是怎么回事吗


谢谢。

非常确定您没有定义变量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

循环没有结束,因为在
Next x
中,必须是循环的同一个变量,类似于
Next ThisWord
,并且必须声明
allWords

Dim showWord as String
showWord = ""

For Each thisWord In allWords
    ....
Next thisWord

愚蠢的问题:您是否已经在代码的前面定义了
这个词
所有词
?很好!最初的响应者完全没有注意到这一点(而且似乎是这样!)。