对象_global的方法“范围”在什么都不做时失败

我有一个macros基本上处理一些列和基于一些访问2003年数据库的交叉检查吐出的结果。 它工作绝对好 – 没有任何结果。

不过,我最近不得不对它进行修改。 代码的一行字面意义上将“8”改为“9”。 但是我下次运行它时,抛出了1004: Method 'Range' of object '_Global' failed错误的1004: Method 'Range' of object '_Global' failed 。 Excel 2003是一件很有趣的事情 – 我曾经为此纠缠过几个小时,试图find可能导致错误的有害代码行,但唉,没有用。 我做了一些我不希望触发的事情:

从原始的macros开始(100%确认工作),如果我只是打开代码,然后保存,所以'最后更新'元数据将更新以反映保存,虽然没有任何改变,它会再次抛出错误在开幕式上。

就好像它太脆弱了,保存macros观将会破坏它。 有任何想法吗?

更新:这是我最初造成这个问题的变化

 iOutputCols = 9 'this was changed to 9 from 8 ReDim Preserve sOutputCols(iOutputCols) sOutputCols(0) = "Policy No" sOutputCols(1) = "Client" sOutputCols(2) = "Trans" sOutputCols(3) = "Effective Date" sOutputCols(4) = "ClosingRef" sOutputCols(5) = "Gross" sOutputCols(6) = "Comm" sOutputCols(7) = "Net Due" sOutputCols(8) = "Risk" 'this line was added 

在这里进行更改,虽然最初导致错误,但似乎并不特别 – 我在代码和其他模块中做了上述其他地方的小改动,有一次,我甚至做了一些testval = "test" ,甚至冗余线会产生错误。 最简单的方式来引起它? 只需打开它,保存它,而不用改变任何东西,并在下次使用时发生错误。

错误发生在这一行,在一个完全不同的代码部分是一个窗体的一部分:

  If strErr <> "" Then MsgBox strErr, vbInformation + vbOKOnly, "Action Error" Application.ScreenUpdating = True 'error occurs here, message box which shows me the error right above 

结束小组

更新2

删除error handling将抛出此行上的错误

  Case "> Send Next Period Reminder" 'error on line below Call ReplaceText(wordApp, "[office_address]", Range("Address_" & Worksheets("UserParms").Range("F6").Value).Value) 'error this line Call ReplaceText(wordApp, "[office_address2]", Range("Address2_" & Worksheets("UserParms").Range("F6").Value).Value) 'more of the same replacetexts below 

对于上下文,这是为“发送下一个周期提醒”select一个选项,该选项从静态文件夹中拉出单词.dot模板,并基于表单内select的数据填充它(因此replace文本)。 这是在不同的模块,从来没有被触及过。

尝试适当地限定你的Range方法调用。 你有这样的线:

  Call ReplaceText(wordApp, "[office_address]", Range("Address_" & Worksheets("UserParms").Range("F6").Value).Value) 'error this line Call ReplaceText(wordApp, "[office_address2]", Range("Address2_" & Worksheets("UserParms").Range("F6").Value).Value) 

虽然可能不是很明显,但是有些情况下,无论是环境还是基于代码的, Range这些不合格用途都可能会失败。 更改引用像Range("Address...到类似yourTargetWS.Range("Address..