Freunde laufen,Optimieren VBA-Code schneller
ich diesen Code unten bin mit berechnen Ergebnissen mit zwei Reihen von Variablen x, y (Länge und Breite) in einer Matrix. Da die Formel kompliziert ist, dauert es sehr lange, um alle Ergebnisse zu erhalten. Kann mir jemand helfen, den Code so zu optimieren, dass er schneller läuft? Vielen Dank!
Der Code läuft zwischen zwei Registerkarten, VBA Calculation Sheet und Sheet 2. Das erste Array beginnt bei Zelle A3 und das zweite Array beginnt bei Zelle B1.
Sub calculator()
Worksheets("Sheet2").Select
Dim long1 As Double
Dim lat1 As Double
Application.ScreenUpdating = False
x = 3
y = 2
While IsEmpty(Cells(x, 1)) = False
lat1 = Cells(x, 1).value
While IsEmpty(Cells(1, y)) = False
long1 = Cells(1, y).value
Worksheets("VBA Calculation Sheet").Select
Cells(28, 7) = lat1
Cells(29, 7) = long1
index = Cells(23, 7).value
Worksheets("Sheet2").Select
Cells(x, y) = index
y = y + 1
Wend
x = x + 1
y = 2
Wend
End Sub
Wenn der Code funktioniert, dann müssen Sie diese Frage mit einem besseren Titel auf https://codereview.stackexchange.com/ zu veröffentlichen, es ist zu breit für dieses Forum, aber perfekt für diesen. –
Ich würde über das Arbeiten mit Arrays nachlesen. Ihr Code ist langsam, da er ständig mit dem Arbeitsblatt interagiert. Es ist besser, Daten in Arrays zu speichern und sie im Code (im Speicher) zu verarbeiten. Dann geben Sie die endgültigen Ergebnisse bei Bedarf in das Arbeitsblatt ein. – Calico
Sie möchten auch die Berechnungen auf dem Blatt zeigen. Um die Dinge zu beschleunigen, sollten Sie die Anzahl der Male beschränken, die Sie benötigen, um auf das Blatt zu verweisen. Man sollte ein Array laden, durch dieses Array iterieren und die Berechnungen im Code durchführen und ein anderes Array zur Ausgabe laden. Auf diese Weise können Sie die Arbeitsblätter nur 2 oder 3 Mal bearbeiten. Dies ist die Hauptverlangsamung sowie die Verwendung von '.Select'. –