Excel If "Schleife"?

... komplette Frage anzeigen

4 Antworten

(Bei Blöcken, die nicht für Wiederholungen vorgesehen sind, spricht man einfach von "Blöcken", hier also "If-Block".)

Eine Zelle wird als [Tabelle].Cells(Zeile, Spalte) angesprochen, C2 also als Cells(2, 3) und C3 als Cells(3, 3). (Wenn man sich im Code der betreffenden Tabelle befindet, braucht die Tabelle nicht angegeben zu werden.)

Code:

If IsEmpty(Cells(2, 3).Value) OR (Cells(2, 3).Value = 0) Then
    'Wert von C3 übernehmen
End If

Oder, da dies zu Fehlern führen kann, wenn C2 einen Wert enthält, der sich nicht mit einer Zahl vergleichen lässt:

If Not IsEmpty(Cells(2, 3).Value) Then
'OK - nix tun
ElseIf Cells(2, 3).Value = 0 Then 'Hier kann immer noch ein Fehler auftreten ...
'OK - nix tun
Else
'Wert von C3 übernehmen
End If

oder entsprechend verfeinern, je nach Bedarf

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Iamiam
09.02.2016, 13:54

DH!, sehr schön auf alle Eventualitäten eingegangen!

0

Ich kenne mich nicht in Excel und VBA aus, wohl aber mit Programmierung allgemein.

Es gibt keine If-Schleife. If-Anweisung ist OK, If-Verzweigung trifft es auch.

Aber Schleifen sind zur wiederholten Abarbeitung von Programmcode unter Angabe einer Abbruchbedingung da. If verzweigt nur den Programmcode.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von LouisGoebel
09.02.2016, 10:29

Ja ich habe auch ein zwei jahre C++ gemacht, aber das ist schon ne Weile her...

0

Als Schleife würde ich eine If-Abfrage nicht bezeichnen. Schleifen verbinde ich mit Iterationen, also dass Code mehrfach durchlaufen wird (/werden könnte).

Der Code für dich:

If Range("C2").Value = 0 Then Range("C2").Value = Range("C3").Value
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PWolff
09.02.2016, 12:02

Funktioniert nur, wenn C2 tatsächlich leer ist oder eine Zahl enthält. Und auch dann nicht, wenn eine 0 in C3 ein gültiger Wert ist.

Edit: Hab noch mal die Frage gelesen - 0 wird ja ausdrücklich als gültiger Wert ausgeschlossen.

0

=WENN(C2="";C3;"")

Sollte so klappen, ist zwar schon etwas her, dass ich so mit Excel gearbeitet habe, aber sollte klappen.  Der Code muss in C2 kopiert werden

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Suboptimierer
09.02.2016, 10:14

Das geht nicht, es sei denn man aktiviert die Iterationen in den Exceloptionen, da C2 sich mit der Formel auf sich selbst bezieht.

2