Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

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

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?
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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige