Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Loop mit Bedingung steuern

Loop mit Bedingung steuern
02.06.2022 20:55:44
Max_Danger
Hallo Excel Profis,
ich habe noch eine Frage bezüglich meiner Loop Abfrage.
Ich würde diese gerne mit einem weiteren Parameter steuern.
Aktuell wird geprüft, ob sich die Summe wischen C10:H10 verändert, wenn ja stoppt der automatische Durchlauf.
Das klappt alles wunderbar und wie gewünscht.
Jetzt stellt sich mir die Frage, ob es möglich ist diese Summenprüfung einer Bedingung zu Grunde zu legen.
Wenn in Tabelle 1 in "C1" bswp. 1 steht, dann soll die Summenprüfungen zum stoppen des Loops in Tabelle 2 C10:H10 statt finden.
Wenn die Zelle in Tabelle 1 "C1" leer ist soll die Prüfung wie gehabt in Tabelle 1 C10:H10 durchführen.
Kann man das irgendwie ergänzen?
Anbei mein aktueller Codeschnipsel

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Call StatusCheck
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Über eine Hilfestellung würde ich mich sehr freuen.
Vielen Dank
Viele Grüße
Max

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Loop mit Bedingung steuern
02.06.2022 21:03:44
{Boris}
Hi,

Dim SumRange as Range
If Worksheets("Tabelle1").Range("C1") = 1 then
Set SumRange = Worksheets("Tabelle2").Range("C10:H10")
Else
Set Sum Range = Range("C10:H10")
End If
If WorksheetFunction.Sum(SumRange) 
VG, Boris
AW: Loop mit Bedingung steuern
02.06.2022 21:04:52
{Boris}
Zwischen Sum Range gehört natürlich kein Leerzeichen:

Dim SumRange as Range
If Worksheets("Tabelle1").Range("C1") = 1 then
Set SumRange = Worksheets("Tabelle2").Range("C10:H10")
Else
Set SumRange = Range("C10:H10")
End If
If WorksheetFunction.Sum(SumRange) 
VG, Boris
AW: Loop mit Bedingung steuern
03.06.2022 01:50:03
Max_Danger
Vielen Dank Boris, das funktioniert perfekt :)
Anzeige
AW: Loop mit Bedingung steuern
02.06.2022 22:05:10
GerdL
Moin Max!

Sub StartMakro()
Dim dblPruefung As Double
Dim Wsh As Worksheet
Neustart:
Set Wsh = Worksheets("Tabelle1")
If Wsh.Range("C1") = 1 Then Set Wsh = Worksheets("Tabelle2")
dblPruefung = WorksheetFunction.Sum(Wsh.Range("C10:H10"))
Call StatusCheck
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Wsh.Range("C10:H10")) 
Gruß Gerd
AW: Loop mit Bedingung steuern
03.06.2022 01:50:44
Max_Danger
Vielen Dank Gerd für Deine Hilfestellung. Das funktioniert perfekt!
AW: Loop mit Bedingung steuern
02.06.2022 22:33:00
Anton
Hi Max, mir ist bewusst, dass wenn man mit einer neuen Sprache startet, oft nur wenige Sprachelemente kennt und froh ist, wenn der Code funktioniert. Ging mir nicht viel anders bei meinem Start mit VBA und C#.
Früher waren die Goto-Anweisungen die einzige Möglichkeit, Schleifenlogik zu realisieren und den Code mehrmals ablaufen zu lassen. Die meisten Sprachen unterstützen dies gar nicht mehr, VBA ist da fast eine Ausnahme. In VBA werden GoTo-Anweisungen heutzutage eigentlich nur für Fehlerbehandlung verwendet, jedoch nicht für Ablaufsteuerung. Natürlich gibt es kein Gesetz, das es verbietet, sollte jedoch dein Programm größer werden und du vielleicht weitere Schleifen brauchen, wird es mit GoTos sehr schwer zu erweitern und zu verstehen sein.
Auch wenn ich ein absoluter Verfechter der „Viele Wege führen nach Rom“-Philosophie beim Programmieren bin, kann ich dir den GoTo-Weg nicht empfehlen 😎
Meine Empfehlung für dich sind For-Schleife und Do-While-Schleifen.
For-Schleifen kannst du dann einsetzen, wenn du vor dem Beginn der Verarbeitung genau weisst, wie oft deine Schleife durchlaufen soll.
Eine Do-While-Schleife hingegen kannst du nutzen, wenn du die Anzahl der erforderlichen Durchläufe nicht kennst. Dabei prüft man vor jedem Durchlauf, ob die Schleife den nächsten Durchlauf noch mitmachen muss, oder beendet werden kann. Also genau die Schleife, die du in diesem konkreten Fall benötigst.
Viele Grüße
Anton
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige