VBA lernen - Excel 2007/2010 (4)

Zusammenfassung: Was bisher geschah: Einfache Iteration (Schleife, Zyklus)

Bisher noch keine Bewertungen für diesen Artikel.

Einfache Iteration (Schleife, Zyklus)

Auf dieser Seite

Beim Erzeugen einer Reihe aus z.B. 20 Zahlen muss das Bildungsgesetz 20mal hintereinander ausgeführt werden. So eine Lösung müssen Sie nun nicht 20mal hintereinander schreiben. Das hat nun gar nichts mit Programmieren zu tun, denn das wäre total ineffektiv. Die Prozedur benötigte den 20fachen Speicherplatz pro Berechnung und ist total starr. Was ist, wenn demnächst 100mal gerechnet werden muss? So ein Problem lösen Sie mit einer Schleife. Im Beispiel des zweiten Kursteils wurde dieser Block bereits vorgestellt.

Ganz = Eingabewert
Worksheets("Tabelle1"). _
Range("E3").Value = Ganz
For I = 1 To 20 ' Anfangsklausel
Worksheets("Tabelle1"). _
Cells(4 + I, 4).Value = Ganz
Worksheets("Tabelle1").Cells(4 + I, 6). _
Value = I * Ganz
Next
60490_bild03.jpg

Einfache Iteration

In der Anfangsklausel (auch For-Klausel genannt) wird eine Zählvariable angegeben und mit einem Startwert versehen. Genauso muss ein Endwert angegeben werden. Die notwendige Schrittweite kann standardmäßig bei 1 weggelassen werden. Nach jedem Durchlauf des Anweisungsblockes 1 wird die Zählvariable um die Schrittweite erhöht (bzw. bei negativer Schrittweite vermindert) und mit dem Endwert verglichen. Ist der Endwert überschritten, wird die Schleife verlassen.

Schleifen können auch geschachtelt werden, wie Sie im folgenden Beispiel im Modul Zyklen Prozedur auswertung sehen.

' Mit Spalte B beginnen
For Spalte = 2 To 7
'Die ausgewählte Spalte wird
'beginnend mit Zeile 4 ausgewertet
  For Zeile = 4 To 12 
If Worksheets("Tabelle1"). _
    Cells(Zeile, Spalte) <> 0 Then
     Aktuell = Worksheets("Tabelle1"). _
     Cells(Zeile, Spalte) / _
     Worksheets("Tabelle1"). _
     Cells(3, Spalte) ' Preis pro Einheit
      If Ergebnis >= Aktuell Then
         Ergebnis = Aktuell
         ErgZeile = Zeile
         ErgSpalte = Spalte
     End If
End If
 Next Zeile
Next Spalte