Ich habe drei Blätter, Blatt1, Blatt2 und Blatt3.Das Programm läuft für eine lange Zeit
Ich versuche, Blatt 1, Spalte N und F in Blatt 3 zu kopieren.
Dann, mit dieser ID, schaue ich in Spalte A und sehen, ob sie übereinstimmen, Wenn ja, dann kopiere ich die Matched ID auf Blatt3.
Ich verwende aus diesem Grund den folgenden Code.
der Code funktionierte bis jetzt gut. Aber ich aktualisiere mein sheet2 heute Morgen, und aus irgendeinem Grund ist der Code Keep auf Ausführung für eine lange Zeit und immer noch bin ich nicht in der Lage, die Ausgabe zu bekommen, ich bin nicht in der Lage, den Grund dafür herauszufinden.
Ich habe versucht zu debuggen und die folgende Zeile wurde markiert.
If Not RNG Nothing Then
Außerdem bin ich eine Schaltfläche in dem Arbeitsblatt verwenden und die Funktionen aufrufen, wie
Anruf thisworkbook.lookup
In ähnlicher Weise habe ich 6 weitere Funktionen, die an diesen Knopf angeschlossen sind.
Hier ist der vollständige Code. Könnte mir jemand helfen, herauszufinden, was der Grund dafür ist.
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
Ein paar Vorschläge: Add „Thisworkbook“ als Qualifier vor „Sheets“, wo Sie die verschiedenen Blattnamen auswählen. Dies stellt sicher, dass es nicht versucht, mit dem ActriveWorkbook zu arbeiten (es sollte nicht ...) Hat das Arbeitsblatt viele Formeln? Sie könnten versuchen: 'Application.Calculation = xlManual' am Anfang und' Application.Calculation = xlAutomatic' am Ende. Sie können auch am Anfang "application.screenupdating = false" und am Ende "application.screenupdating = true" ausprobieren. Diese Dinge beschleunigen VBA-Routinen auf sehr großen Tabellen, die viel Zeit für die Berechnung benötigen. – ainwood
@ainwood ya, was sind die Vorschläge? – Mikz
Sieht so aus, als könnten Sie den VBA durch ein paar SVERWEIS-Formeln ersetzen, haben Sie das berücksichtigt? – jkpieterse