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