我有一个大宏,它基本上处理一些列并根据与 access 2003 数据库的一些交叉检查来吐出结果。它工作得非常好——完全没有故障。
但是,我最近不得不对其进行修改。它实际上是在一行代码中将“8”更改为“9”。但是下次我运行它时,它抛出了1004: Method 'Range' of object '_Global' failed
错误。Excel 2003 是一件有趣的事情 - 我曾经为此挠了好几个小时,试图找到可能导致错误的违规代码行,但可惜无济于事。我做了一些我没想到会触发任何事情的事情:
从原始宏(100% 确认工作)开始,如果我只是打开代码,然后保存它,以便“上次更新”元数据将更新以反映保存,尽管绝对没有任何改变,它会再次抛出该错误在打开。
就好像它是如此脆弱,以至于按原样保存宏会破坏它。有任何想法吗?
更新:这是我最初引起问题的更改
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
删除错误处理会在此行引发错误
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
对于上下文,这是为“发送下一个期间提醒”选择一个选项时,它从静态文件夹中提取一个单词 .dot 模板并根据工作表中选择的数据填充它(因此替换文本)。这是在不同的模块中,以前从未接触过。