vba 运行时错误“-2147418113 (8000ffff)”:自动化错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25070435/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-12 04:03:32  来源:igfitidea点击:

Run-time error '-2147418113 (8000ffff)': Automation Error

excel-vbavbaexcel

提问by Felipe

My code is running perfectly until get to "If c = "" Then". At this point the run time error '-2147418113 (8000ffff)': Automation Erroris raised. I have put an On Error Resume Next statement to check if everything goes right if I skip this line and it does. I really don't understand what this error means and I wasn't able to find useful information about it. Could someone bring light to this problem? I have tried to change "If c = "" Then" to "If len(c.value)=0 Then"but it raises the same error. All the variables in AddresRawDataFile are defined as public (as range) and they were set to range in a different module, called PublicVariable, which is called by every procedure.

我的代码运行完美,直到到达“If c =”“Then”。此时运行时错误 “-2147418113 (8000ffff)”:引发自动化错误。如果我跳过这一行,我已经放置了一个 On Error Resume Next 语句来检查是否一切正常。我真的不明白这个错误意味着什么,我无法找到有关它的有用信息。有人可以解决这个问题吗?我试图将“If c =”“ Then”更改为“If len(c.value)=0 Then”,但它引发了相同的错误。AddresRawDataFile 中的所有变量都定义为 public(作为范围),并且它们在不同的模块中设置为范围,称为 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

回答by barrowc

As the items named RawHg202Rangeetc are actually Rangeobjects then you should use Is Nothingto check if they are empty:

由于名为RawHg202Rangeetc的项目实际上是Range对象,因此您应该使用它Is Nothing来检查它们是否为空:

AddressRawDataFile = Array(RawHg202Range, RawPb204Range, RawPb206Range, RawPb207Range, RawPb208Range, RawTh232Range, RawU238Range, _
    RawHg202Header, RawPb204HeaderRange, RawPb206HeaderRange, RawPb207HeaderRange, RawPb208HeaderRange, RawTh232HeaderRange, _
    RawU238HeaderRange)

    For Each c In AddressRawDataFile
        If c Is Nothing Then