Schleifendurchlauf für einen Zellenbereich

Wenn Sie Visual Basic verwenden, ist es häufig erforderlich, dass Sie denselben Anweisungsblock für jede Zelle in einem Zellbereich ausführen. Zu diesem Zweck kombinieren Sie eine Schleifen-Anweisung mit einer oder mehreren Methoden, um jeweils eine Zelle anzugeben, und führen den Vorgang aus.

Eine Möglichkeit, einen Schleifendurchlauf durch einen Zellbereich auszuführen, besteht darin, die For...Next-Schleife zusammen mit der Cells-Eigenschaft zu verwenden. Durch Verwenden der Cells-Eigenschaft können Sie Indexnummern für Zellen durch den Schleifenzähler (bzw. sonstige Variablen oder Ausdrücke) ersetzen. Im folgenden Beispiel wird der Zeilenindex durch die Variable counter ersetzt. In dieser Prozedur werden die Zellen im Zellbereich "C1:C20" in einer Schleife durchlaufen, und alle Zahlen, deren Absolutwert unter 0,01 liegt, auf 0 (Null) gesetzt.

Sub RoundToZero1() 
 For Counter = 1 To 20 
 Set curCell = Worksheets("Sheet1").Cells(Counter, 3) 
 If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 
 Next Counter 
End Sub

Eine weitere einfache Möglichkeit zum Ausführen eines Schleifendurchlaufs durch einen Zellbereich besteht darin, die For Each...Next-Schleife zusammen mit einer von der Range-Methode zurückgegebenen Auflistung von Zellen zu verwenden. Visual Basic legt bei jedem Ausführen der Schleife automatisch eine Objektvariable für die nächste Zelle fest. In der folgenden Prozedur werden die Zellen im Zellbereich "C1:C20" in einer Schleife durchlaufen, und alle Zahlen, deren Absolutwert unter 0,01 liegt, auf 0 (Null) gesetzt.

Sub RoundToZero2() 
 For Each c In Worksheets("Sheet1").Range("A1:D10").Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Wenn Sie die Begrenzungen des Bereichs, den Sie in einer Schleife durchlaufen möchten, nicht kennen, können Sie die CurrentRegion-Eigenschaft verwenden, um den Bereich zurückzugeben, der die aktive Zelle umgibt. In der folgenden in einem Arbeitsblatt ausgeführten Prozedur wird z. B. ein Schleifendurchlauf durch den Zellbereich ausgeführt, der die aktive Zelle umgibt, und alle Zahlen, deren Absolutwert unter 0,01 liegt, auf 0 (Null) festgelegt.

Sub RoundToZero3() 
 For Each c In ActiveCell.CurrentRegion.Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.