VBA数组错误

VBA数组错误,vba,excel,Vba,Excel,我有下面的代码,它使用两个for循环Prod和Dev 数组中有许多值,但我仅以两个值为例 它所做的是将值从一个excel复制到另一个excel 现在,文件NSA_103_B_Roles.xls可能不存在 在这种情况下,我不想让代码采取任何行动,所以我已经把错误恢复下一步 但它仍然在excel中打印不存在的值, 原因是什么 Private Sub CommandButton1_Click() Prod = Array("ZS7_656", "PCO_656") Dev = Array("NSA_

我有下面的代码,它使用两个for循环Prod和Dev 数组中有许多值,但我仅以两个值为例 它所做的是将值从一个excel复制到另一个excel

现在,文件NSA_103_B_Roles.xls可能不存在 在这种情况下,我不想让代码采取任何行动,所以我已经把错误恢复下一步

但它仍然在excel中打印不存在的值, 原因是什么

Private Sub CommandButton1_Click()

Prod = Array("ZS7_656", "PCO_656")
Dev = Array("NSA_103", "DCA_656")

For lngCounter1 = LBound(Dev) To UBound(Dev)
    For lngCounter = LBound(Prod) To UBound(Prod)

        On Error Resume Next
        Set Zz2 = Workbooks.Open("C:\Users\*****\Desktop\New folder\" & 
        Dev(lngCounter1) & "_B_Roles.xls")
        Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value = "anirudh"

        ThisWorkbook.Sheets(Prod(lngCounter)).Range("A2").Value = 
        Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value

        On Error GoTo 0
    Next lngCounter
Next lngCounter1

End Sub

请尝试下面的代码,并在代码注释中进行解释:

Private Sub CommandButton1_Click()

Dim Zz2 As Workbook

Prod = Array("ZS7_656", "PCO_656")
Dev = Array("NSA_103", "DCA_656")

For lngCounter1 = LBound(Dev) To UBound(Dev)
    For lngCounter = LBound(Prod) To UBound(Prod)

        ' ==== this section starts the error handling ===
        On Error Resume Next
        Set Zz2 = Workbooks.Open("C:\Users\*****\Desktop\New folder\" & _
        Dev(lngCounter1) & "_B_Roles.xls")
        On Error GoTo 0
        If Zz2 Is Nothing Then ' <-- unable to find the file
            MsgBox "unable to find the specified file", vbCritical
            Exit Sub
        End If
        ' === Up to Here ===

        Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value = "anirudh"

        ThisWorkbook.Sheets(Prod(lngCounter)).Range("A2").Value = Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value
    Next lngCounter
Next lngCounter1

End Sub

下一步错误恢复时不使用。首先检查错误,并根据该检查采取措施。在您的情况下:首先检查文件是否存在。这可以通过Dir函数轻松完成。