Ich habe hier einen kleinen VBA-Code, der mir in einer Excel-Tabelle etwas sortiert, wie von mir gewünscht.
Sub Adressen_sortieren()
' Adressen sortieren nach Nachnamen und Vornamen
With Cells(1, 1).CurrentRegion
.Sort key1:=.Cells(1, Range("Nachname").Column), order1:=xlAscending, _
key2:=.Cells(1, Range("Vorname").Column), order1:=xlAscending, _
Header:=xlYes
End With
' Nach Oben links scrollen und in Zelle A2 springen
Application.Goto ActiveSheet.Range("A2"), True
End Sub
Ich hatte mir den Code damals mit dem Makrorecorder und etwas fremder Hilfe zusammengestückelt :-) Nun hatte ich die Idee, Chat GPT folgende Frage zu stellen: "Optimiere den Code bezüglich Effizienz und Modernität.". Und das Ergebnis ist das hier:
Sub Adressen_sortieren()
' Adressen sortieren nach Nachnamen und Vornamen
' Deklaration der erforderlichen Variablen
Dim ws As Worksheet
Dim sortRange As Range
' Festlegen des Arbeitsblatts
Set ws = ActiveSheet
' Festlegen des zu sortierenden Bereichs (von Zelle A1 bis zum aktuellen Region)
Set sortRange = ws.Range("A1").CurrentRegion
' Sortieren nach Nachnamen und Vornamen
With sortRange.Sort
.SetRange sortRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Nach oben links scrollen und in Zelle A2 springen
Application.Goto ws.Range("A2"), True
End Sub
Und das hier sind die dazugehörigen Erläuterungen von Chat GPT:
Klare Deklaration der Variablen, um sicherzustellen, dass Option Explicit verwendet wird und Variablen korrekt typisiert sind.
Direktes Festlegen des Arbeitsblatts (Worksheet) und des zu sortierenden Bereichs.
Verwendung von With sortRange.Sort für eine kompaktere und lesbarere Syntax.
Hinzufügen von Einstellungen für MatchCase, Orientation, und SortMethod für eine klarere Definition der Sortierparameter.
Verwendung der SetRange-Methode, um den zu sortierenden Bereich festzulegen.
Diese Optimierungen verbessern die Lesbarkeit, reduzieren die Redundanz im Code und stellen sicher, dass der Code modernen Programmierstandards entspricht.
Da ich nun versuche, den neuen Code auch etwas zu verstehen, habe ich folgende Frage:
Woher "weiß" der neue Code denn, dass nach Nachnamen und Vornamen sortiert werden soll? Ich frage, weil in meinem alten Code, ist das ja zu lesen, aber im neuen Code finde ich nirgendwo "Nachnamen" und "Vornamen".
Könnte Ihr mir da helfen und mir das erklären?
Gruß
Ingo