0
我有三张工作表,工作表1,工作表2和工作表3。该程序长时间执行
我试图复制工作表1中的第N列和第F列。
然后,使用此ID,我查看列A并查看它们是否匹配,如果是这样,那么我将匹配ID复制到sheet3。
我正在使用下面的代码,为此。
代码工作正常,直到现在。但我今天早上更新了sheet2,由于某种原因,代码长时间执行并仍然无法获得输出,我无法找出原因。
我试图调试,并且下面的行突出显示。
如果不RNG是Nothing然后
另外,我使用工作表中的一个按钮,呼叫功能,如
呼叫thisworkbook.lookup
同样我有6个其他功能,附加到这个按钮。
这里是完整的代码。有人能帮我弄清楚这是什么原因。
Sub lookup()
Dim totalrows As Long
Dim Totalcolumns As Long
Dim rng As Range
Dim rng1 As Range
Dim rng2 As Range
Dim i As Long
'Copy lookup values from sheet1 to sheet3
Sheets("S1").Select
totalrows = ActiveSheet.UsedRange.Rows.Count
Totalcolumns = ActiveSheet.UsedRange.Columns.Count
'TotalRows = 441
'Totalcolumns = 392
Range("N5:N" & totalrows).Copy Destination:=Sheets("s3").Range("E5")
Range("F5:F" & totalrows).Copy Destination:=Sheets("s3").Range("H5")
'Go to the destination sheet
Sheets("s3").Select
For i = 5 To totalrows
'Search for the value on sheet2
Set rng = Sheets("s2").UsedRange.Find(Cells(i, 5).Value)
'If it is found put its value on the destination sheet
If Not rng Is Nothing Then
Cells(i, 6).Value = rng.Value
Cells(i, 1).Value = rng.Offset(0, 1).Value
Cells(i, 2).Value = rng.Offset(0, 2).Value
Cells(i, 3).Value = rng.Offset(0, 3).Value
Cells(i, 4).Value = rng.Offset(0, 9).Value
Cells(i, 9).Value = rng.Offset(0, 10).Value
Cells(i, 12).Value = rng.Offset(0, 6).Value
Cells(i, 13).Value = rng.Offset(0, 5).Value
Cells(i, 14).Value = rng.Offset(0, 8).Value
End If
Next
End Sub
一对夫妇的建议:增加“的ThisWorkbook”作为领先的,你选择不同的工作表名称“表”限定词。这将确保它不尝试使用ActriveWorkbook(它不应该......)工作表是否有很多公式?你可以尝试:'Application.Calculation = xlManual'开头,'Application.Calculation = xlAutomatic'结束。您也可以在开始时尝试'application.screenupdating = false',最后使用'application.screenupdating = true'。这些东西加速了大型电子表格上的vba例程,需要大量的时间进行计算。 – ainwood
@ainwood ya,有什么建议? – Mikz
看起来你可以用几个VLOOKUP公式代替VBA,你有没有考虑过? – jkpieterse