2017-08-29 68 views
0

我有下面的代码,它使用两个for循环(Prod和Dev)
阵列中有许多值,但我只采取了两个例子 它所做的是,它复制值一个擅长对方。VBA阵列错误

现在,有一个概率文件NSA_103_B_Roles.xls亘古不存在 在这种情况下,我不想代码采取任何行动,所以我已经把on error resume next

但它毕竟是打印的价值不存在的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 
+0

不要使用错误继续下一步。首先检查错误,并根据该检查采取措施。在你的情况下:首先检查文件是否存在。这可以通过Dir功能轻松完成。 –

回答

1

尝试下面的代码,解释代码的注释里:

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