VBA: keine bessere Lösung
04.12.2021 18:16:41
Yal
Hallo Sigi,
dein Code ist sauber. Man könnte sich ein paar Variablen sparen, um es schlanker zu machen, aber es wäre keine wesentliche Optimierung.
Nur den Max ist für mich nach nachvollziehbar: es sind mindestens zwei parameter erwartet. Die bisherige Wert solte auch mitgegeben werden:
lRGNr = Application.Max(.Cells(lol, 2), lRGNr)
Ich habe folgende Gewohnheiten, ob sie helfen, "besser" zu programmieren, ist geschmacksache:
_ Schleifen-Variablen 1-stellig: For i = ... , For each Z in ...
_ Variablennamen so kurz wie möglich aber sprechend (+"Kamelcase"), meist auf Deutsch, um aus dem VBA rauszustechen.
_ bei Sub/Function-interne Variablen, keine rng.. int... lng... Präfix. Das braucht man nur bei übergreifenden Variablen in grossen Projekt.
_ mit den Objekt anstatt mit deren Eigenschaften arbeiten. Man kann dann jede Eigenschaft zugreifen. In dem Fall:
With Sheets("RGNR")
For Each Z In .Range(.Range("A2"), .Range("A99999").End(xlUp)).Cells
If Year(Z.Value) = Year(cboRG_Datum) Then ReNrMax = Application.Max(Z.Offset(, 1).Value, ReNrMax)
Next
End With
VG
Yal