Excel Vba in schleife?

2 Antworten

Bin zwar auch ein Fän von For Each...next, aber es geht auch mit einer leichter verständlichen For 1 to ...-Schleife, und zwar so (sofern deine Formel ok ist, hab zwar IIf schon gesehen, ist mir aber nicht geläufig):

  • Sub VarZ1_20()
  • Dim Z as Integer
  • For Z = 1 to 20
  • Worksheets("Tabelle1").Range("C"&Z) = IIf((IsEmpty(Range("A"&Z)) + IsEmpty(Range("B"&Z))) <> 0, "", (Range("A"&Z) - Range("B"&Z) + 1))
  • next
  • End Sub

kannst du hier kopieren (die dicken Aufzählungspunkte werden von VBA ignoriert)

Da brauchst du Variablen. Du kannst es dann mit "for each" machen.

Dim rg as Range, r as Range

Set rg = Range("A1:A20") ' Wenn du 20 Zeilen ausrechnen willst

For each r in rg

.....

Next r

Im Innern der Schleife verweist dann r nacheinander auf Range("A1"), Range("A2")....Range("A20")

Spalten B und C kannst du mit Offset ansprechen.

r.Offset(0,1) spricht die Zellen in Spalte B an, und r.Offset(0,2) die in Spalte C.


Ahoy12 
Beitragsersteller
 29.11.2019, 08:41

Kann nur etwas damit anfangen,weiß nicht wo was hin geht.Bin Absoluter Anfänger :)

1
User637236  29.11.2019, 09:06
@Ahoy12

Lies dir am besten durch wie "For each" geht, und wie Variablen in VBA gehen.

Ist alles auf dem Blatt "Worksheets("Tabelle1") oder nur Spalte "C". Hatte jetzt angenommen es war alles auf einem Sheet.

Du hast nur ganz am Anfang 'Worksheets("Tabelle1")' geschrieben. Das muss bei den anderen Ranges dann auch hin. (Geht auch mit "With"-Statement ganz am Anfang, aber nur zur Abkürzung. Funktioniert genauso)

1