我有一個程序來比較我的ThisWorkbook和其他工作簿之間是否存在匹配。除了當代碼應該在其他工作簿的第二個工作表中找到文本時,它正在做的很好。它會迭代直到它崩潰。我試圖找到文本單元存在於這兩個文件,但由於某種原因,我的代碼不能識別它(我已經驗證的格式,都是以文本格式)在兩個不同的工作簿上工作,無法訪問第二個工作表
在此行Case taxasWks.Cells(lin_dest, 4) = transf1Wks.Cells(lin_ori_2, 1)
發生崩潰:
的錯誤是:運行時錯誤1004 應用程序定義或對象定義的錯誤
Dim consultaWbk As Excel.Workbook
Dim linhas1Wks As Excel.Worksheet
Dim linhas2Wks As Excel.Worksheet
Dim transf1Wks As Excel.Worksheet
Dim transf2Wks As Excel.Worksheet
Dim taxasWks As Excel.Worksheet
Dim lin_dest As Long
Dim lin_ori_1 As Long
Dim lin_ori_2 As Long
Set consultaWbk = Workbooks.Open("C:\Users\Feels Bad Man\Dropbox\Tesingz\tesingz\Com paineis de transformador - versao 2.xlsm")
Set linhas1Wks = consultaWbk.Worksheets("Taxas linhas")
Set linhas2Wks = consultaWbk.Worksheets("Tempo médio de reposição linhas")
Set transf1Wks = consultaWbk.Worksheets("Taxas Transformadores")
Set transf2Wks = consultaWbk.Worksheets("Tempo médio de reposição transf")
Set taxasWks = ThisWorkbook.Worksheets("taxas falha temp med rep")
lin_dest = 2
lin_ori_1 = 2
lin_ori_2 = 2
Do While taxasWks.Cells(lin_dest, 1) <> ""
Select Case True
Case taxasWks.Cells(lin_dest, 4).Value2 = linhas1Wks.Cells(lin_ori_1, 1).Value2:
taxasWks.Cells(lin_dest, 5).Value2 = linhas1Wks.Cells(lin_ori_1, 3).Value2
taxasWks.Cells(lin_dest, 6).Value2 = linhas1Wks.Cells(lin_ori_1, 4).Value2
taxasWks.Cells(lin_dest, 7).Value2 = linhas1Wks.Cells(lin_ori_1, 5).Value2
taxasWks.Cells(lin_dest, 8).Value2 = linhas1Wks.Cells(lin_ori_1, 6).Value2
taxasWks.Cells(lin_dest, 9).Value2 = linhas1Wks.Cells(lin_ori_1, 7).Value2
taxasWks.Cells(lin_dest, 10).Value2 = linhas2Wks.Cells(lin_ori_1, 2).Value2
taxasWks.Cells(lin_dest, 11).Value2 = linhas2Wks.Cells(lin_ori_1, 3).Value2
taxasWks.Cells(lin_dest, 12).Value2 = linhas2Wks.Cells(lin_ori_1, 4).Value2
taxasWks.Cells(lin_dest, 13).Value2 = linhas2Wks.Cells(lin_ori_1, 5).Value2
taxasWks.Cells(lin_dest, 14).Value2 = linhas2Wks.Cells(lin_ori_1, 6).Value2
lin_dest = lin_dest + 1
lin_ori_1 = 2
Case Else:
lin_ori_1 = lin_ori_1 + 1
End Select
Select Case True
Case taxasWks.Cells(lin_dest, 4).Value2 = transf1Wks.Cells(lin_ori_2, 1).Value2:
taxasWks.Cells(lin_dest, 5).Value2 = transf1Wks.Cells(lin_ori_2, 2).Value2
taxasWks.Cells(lin_dest, 6).Value2 = transf1Wks.Cells(lin_ori_2, 3).Value2
taxasWks.Cells(lin_dest, 7).Value2 = transf1Wks.Cells(lin_ori_2, 4).Value2
taxasWks.Cells(lin_dest, 8).Value2 = transf1Wks.Cells(lin_ori_2, 5).Value2
taxasWks.Cells(lin_dest, 9).Value2 = transf1Wks.Cells(lin_ori_2, 6).Value2
taxasWks.Cells(lin_dest, 10).Value2 = transf2Wks.Cells(lin_ori_2, 2).Value2
taxasWks.Cells(lin_dest, 11).Value2 = transf2Wks.Cells(lin_ori_2, 3).Value2
taxasWks.Cells(lin_dest, 12).Value2 = transf2Wks.Cells(lin_ori_2, 4).Value2
taxasWks.Cells(lin_dest, 13).Value2 = transf2Wks.Cells(lin_ori_2, 5).Value2
taxasWks.Cells(lin_dest, 14).Value2 = transf2Wks.Cells(lin_ori_2, 6).Value2
lin_dest = lin_dest + 1
lin_ori_2 = 2
Case Else:
lin_ori_2 = lin_ori_2 + 1
End Select
Loop
Set linhas1Wks = Nothing
Set linhas2Wks = Nothing
Set transf1Wks = Nothing
Set transf2Wks = Nothing
consultaWbk.Close SaveChanges:=False
Set consultaWbk = Nothing
MsgBox "END"
End Sub
而不是循環無休止地閱讀有關使用Find和FindNext。它會加速你的代碼的運行時間很多 –