Kleine "Besonderheiten" mit VBA

- mal was zum ernsthaften Schmunzeln
knobbi38
Beiträge: 41
Registriert: 20. Okt 2024, 14:15
Hat sich bedankt: 2 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Kleine "Besonderheiten" mit VBA

#1

Beitrag von knobbi38 »

Hallo,

hier mal etwas zum Ausprobieren, was nicht ganz so offensichtlich ist:

Code: Alles auswählen

Sub Test_Schleife()
  Dim i As Long
  Dim v As Variant
  Dim avnt(1 To 10) As Variant
 
  For i = 1 To 10
    avnt(i) = i
  Next i
  Debug.Print "i1="; i
    
  For i = 1 To 10
    If i = 5 Then Exit For
  Next i
  Debug.Print "i2="; i

  For Each v In avnt()
    '
  Next
  Debug.Print "v1="; v
 
  For Each v In avnt()
    If v = 5 Then Exit For
  Next
  Debug.Print "v2="; v
End Sub
Wer erkennt den Unterschied zwischen For-Next und For-Each?

Gruß Knobbi38

aus einem Beitrag von mir in einem anderen Forum
Folgende Benutzer bedankten sich beim Autor knobbi38 für den Beitrag:
d'r Bastler
Benutzeravatar
d'r Bastler
Beiträge: 868
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 232 Mal
Danksagung erhalten: 124 Mal

Re: Kleine "Besonderheiten" mit VBA

#2

Beitrag von d'r Bastler »

Moin Knobbi,

mein erstes Aha-Erlebnis aus Deinem Code ist auf jeden Fall mal, dass man nicht nur Objekte wie Worksheets, Shapes oder Items per Each durchlaufen kann, sondern sogar einfachste Arrays/Variants - und das ganz ohne aufwändiges Füllen des Datenfeldes. Aber damit willst Du sicher nicht gelangweilt werden.

Zweite Idee: Deine Each-Variante liefert nur den Ausnahme-Wert 5, die Next-Version Ausnahme und Iterator + 1.

Beides kann je nach Aufgabe sinnvoll/gewünscht sein, wobei die Each-Version einen bestimmten Wert schneller findet.
Ich hoffe, wenigstens ungefähr Deine Frage beantwortet zu haben.

Nun des Bastlers naive Gegenfrage: Was willst du uns damit sagen? :roll:

Liebe Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
knobbi38
Beiträge: 41
Registriert: 20. Okt 2024, 14:15
Hat sich bedankt: 2 Mal
Danksagung erhalten: 28 Mal
Kontaktdaten:

Re: Kleine "Besonderheiten" mit VBA

#3

Beitrag von knobbi38 »

Hallo d'r Bastler,
Was willst du uns damit sagen?
Etwas auf die Unterschiede eingehen, bei der Verwendung von einem Iterator und einer Schleifenvariable in eine For-Next Schleife. Der Einfachheit halber wird oft eine Schleifenvariable verwendet, um zu erkennen, ob eine Schleife vorzeitig verlassen oder bis zum Ende durchlaufen wurde. Die Schleifenvariabel in einer For-Next Schleife hat nach Verlassen der Schleife immer einen definierten Wert, wohingegen bei einer For-Each Iteration dieser nicht unbedingt definiert sein muss, sondern z.B. bei Objekten den Wert Nothing annehmen kann. Dieses ist bei einer Prüfung zu beachten und muss ggf. abgefangen werden.

Auch wenn es um Performance geht, sollte geprüft werden, welches der beiden Verfahren geeigneter ist - sie kann sich manchmal erheblich unterscheiden.

Grüße
Knobbi38
Folgende Benutzer bedankten sich beim Autor knobbi38 für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste