【发布时间】:2014-07-31 23:11:33
【问题描述】:
我的代码运行完美,直到到达“If c =”“Then”。此时出现运行时错误'-2147418113 (8000ffff)': Automation Error。我已经放置了一个 On Error Resume Next 语句来检查如果我跳过这一行是否一切正常并且确实如此。我真的不明白这个错误是什么意思,也找不到有用的信息。有人可以解决这个问题吗?我试图将 "If c = "" Then" 更改为 "If len(c.value)=0 Then" 但它会引发相同的错误。 AddresRawDataFile 中的所有变量都被定义为公共(作为范围),并且它们在不同的模块中设置为范围,称为 PublicVariable,每个过程都会调用该模块。
Private Sub CommandButton3_Ok_Click()
Dim MsgAlert As String
Dim MsgBoxAlert As Variant 'Message box for for many checks done below
Dim c As Variant 'Variable used in a for each structure
Dim AddressRawDataFile As Variant 'Array of variables with address in Box2_UPb_Options
'Code to assign values from Box2_UPb_Options to the related variables
AddressRawDataFile = Array(RawHg202Range, RawPb204Range, RawPb206Range, RawPb207Range, RawPb208Range, RawTh232Range, RawU238Range, _
RawHg202Header, RawPb204HeaderRange, RawPb206HeaderRange, RawPb207HeaderRange, RawPb208HeaderRange, RawTh232HeaderRange, _
RawU238HeaderRange)
'All of the above variables must not be = ""
For Each c In AddressRawDataFile
'On Error Resume Next
If c = "" Then
MsgBoxAlert = MsgBox("There are one or more addresses missing in Start-AND-Options sheet. " & _
"Please, check it.", vbOKOnly, "Missing Address")
Load Box2_UPb_Options
Box2_UPb_Options.MultiPage1.Value = 2
Box2_UPb_Options.Show
End If
Next
【问题讨论】:
-
我已经运行了您的代码 (Excel 2010),但该行没有出现错误。也许我遗漏了一些东西......如果你在该行放置一个断点并在手表中检查
c,它包含什么? -
我也在使用 Excel 2010。看,我不确定我是否理解了你的问题,但让我试着回答一下。变量 c 实际上并不是什么特别的东西,我刚刚创建了它以在“For Each”结构中使用。我用它来检查由 AddressRawDataFile 数组中的变量表示的任何单元格是否为空。我回答你的问题了吗?
-
不是真的...您需要使用调试器单步执行代码,并在代码中出现错误的行之前找出
c的值。 -
好的,现在我明白了。给我一点时间!
-
好的,所以由于
c似乎没有任何内容,那么我怀疑您在数组中填充值/范围的方式在某种程度上失败了。您可能需要创建一个mcve 以便人们能够独立地重现问题。目前,只有您知道该数组是如何填充的。