Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: for-Schleife überspringt einzelne if Verzweigungen

for-Schleife überspringt einzelne if Verzweigungen
08.02.2019 16:20:22
Luca
Hallo zusammen,
Ich bin wie viele hier wahrscheinlich noch raltiv neu bei VBA. (Excel for Mac; Version 16.21)
ich habe ein kleines Problem mit meiner For-Schleife.
Und zwar hab ich in einem anderen Programm bereits Kalenderwochen berechnet und aufgezählt, und wollte jetzt zu den passenden Kws noch den Monat in die Zelle links daneben schreiben. (Z.B. Kw9 -März, Kw14-April etc.).
Soweit so gut.. Programm läuft einigermaßen. Nur werden einzelne If-Verzweigungen übersprungen und deshalb der Monat nicht ausgegeben, sowohl bei der for-schleife als auch bei Do-Until...
Der Code, den ich mal dafür geschrieben habe ist: (ist wahrscheinlich nicht der schönste, aber sollte eigentlich funktionieren, zumindest finde ich keinen Fehler, und des wird auch keiner angezeigt. Ich hoffe, dass mir jemand bei meinem Problem helfen kann.. Vielen Dank im Voraus!
Sub match_months()
'Variablen
Dim Kw As Integer
Dim Monat As Range
Dim x, y As Integer
'Start- und Endwert festelegen
x = Range("H8").Value
y = Range("H34").Value
'Programm
Kw = 1
'(Do-Until-) (for-) Schleife um jeden Wert zwischen 1 und 49 abzutasten
'Do
For Kw = x To y
Set Monat = Columns(8).Find(what:=Kw)
If Not Monat Is Nothing Then           'Wenn Monat einen Wert hat
If Monat = 1 Then
Cells(Monat.Row, 7).Value = "Januar"
End If
If Monat = 5 Then
Cells(Monat.Row, 7).Value = "Februar"
End If
If Monat = 9 Then
Cells(Monat.Row, 7).Value = "März"
End If
If Monat = 14 Then
Cells(Monat.Row, 7).Value = "April"
End If
If Monat = 18 Then
Cells(Monat.Row, 7).Value = "Mai"
End If
If Monat = 23 Then
Cells(Monat.Row, 7).Value = "Juni"
End If
If Monat = 27 Then
Cells(Monat.Row, 7).Value = "Juli"
End If
If Monat = 31 Then
Cells(Monat.Row, 7).Value = "August"
End If
If Monat = 36 Then
Cells(Monat.Row, 7).Value = "September"
End If
If Monat = 40 Then
Cells(Monat.Row, 7).Value = "Oktober"
End If
If Monat = 45 Then
Cells(Monat.Row, 7).Value = "November"
End If
If Monat = 49 Then
Cells(Monat.Row, 7).Value = "Dezember"
End If
End If
'        Kw = Kw + 1
'Loop Until Kw = 49
Next Kw
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: for-Schleife überspringt einzelne if Verzweigungen
08.02.2019 16:34:21
Sven
Hallo Luca,
es wird sicher jede If-Bedingung geprüft. Lass das Programm mal schrittweise Debuggen (F8) und schau, welche Bedingung Du eigentlich erfüllt haben möchtest.
So richtig verstehe ich nicht, was der Code machen soll - eigentlich verstehe ich schon nicht, warum "Monat" einen Wert haben kann, der nicht zwischen 1 und 12 liegt. :o)
Zwei allgemien Hinweise noch: Das "Kw = 1" in Zweile 14 ist witzlos, da Du Kw kurz darauf (For Kw = x To y) wieder auf den Wert der Zelle H8 setzt und "Dim x, y As Integer" ist gerne geschrieben, aber falsch. Richtig wäre "Dim x As Interger, y As Integer".
Grüße
Sven
Anzeige
AW: for-Schleife überspringt einzelne if Verzweigungen
08.02.2019 17:08:35
onur
Poste mal die Datei, ohne zu sehen, wie sie aussieht, ist Alles nur Raterei.
AW: for-Schleife überspringt einzelne if Verzweigungen
09.02.2019 09:42:33
Anja
Also ich glaube du musst einfach

If Monat =1
usw umändern in

If Monat
usw. Weil jetzt überprüfst du ja nur 12 Kalenderwochen und nicht alle oder?
Anzeige
AW: for-Schleife überspringt einzelne if Verzweigungen
10.02.2019 23:06:21
Piet
Hallo
an deinem Bastel Code, und bitte nichts gegen Basteln! - Ist so einiges seltsam. Den solltest du logisch überdenken ...
Wir normalen Menschen haben 12 Monate, als Zahl von 1-12! - Neu ist mir ein Range Bereich von H8:H34, das sind 26 Zellen für 12 Monate. Sind das Monate für Hunde oder Katzen? Wie verteilt man 12 Monate auf 26 Zellen? Das ist mir, Sorry, zu hoch!
Verkürzt könnte der Code wie unten aussehen. vorausgesetzt man arbeitet mit 12 Monaten! Im Original Code werden willkürliche Zahlen bis 49 zugewiesen. Welcher normale Mensch soll das verstehen? Excel Programmierer zaehlen die Monate von 1 bis 12, Fertig!
mfg Piet
Sub match_months()
'Variablen
Dim Kw As Integer
Dim Monat As Range
Dim x, y As Integer
'Start- und Endwert festelegen
x = Range("H8").Value
y = Range("H34").Value
For Kw = x To y
Set Monat = Columns(8).Find(what:=Kw)
If Not Monat Is Nothing Then           'Wenn Monat einen Wert hat
If Monat = 1 Then Cells(Monat.Row, 7).Value = "Januar"
If Monat = 2 Then Cells(Monat.Row, 7).Value = "Februar"
' usw. ,,,,,,
End If
Next Kw
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige