VBA数组错误
我有下面的代码,它使用两个for循环Prod和Dev 数组中有许多值,但我仅以两个值为例 它所做的是将值从一个excel复制到另一个excel 现在,文件NSA_103_B_Roles.xls可能不存在 在这种情况下,我不想让代码采取任何行动,所以我已经把错误恢复下一步 但它仍然在excel中打印不存在的值, 原因是什么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_
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函数轻松完成。