Hallo,
Ich bin noch vba-Anfänger und leider mit meinem Latein am Ende. Mein Code lässt sich zwar problemlos kompilieren, macht aber leider nicht das was ich von ihm möchte.
Folgende Aufgabenstellung:
In Spalte B (2 bis vorerst 100) stehen Daten, deren "Monat" ich mit dem Monat aus Datum1 vergleichen möchte.
In Spalte P (ab Zelle 2) habe ich die Monatsnamen beginnend bei dem von "Datum1" stehen, ComboBox 1 * 12 gibt an, wie viele das sind. (geplant sind bis zu 36 Monate)
( d.h. P2: September, P3: Oktober, ... P6:Januar,...)
Nun möchte ich gerne in Spalte Q (auch ab Zelle 2), dass das Programm immer, wenn in Spalte B ein Eintrag mit dem passenden Monat gefunden wurde, den Wert in der dem Monat entsprechenden Zelle um 1 erhöht. (Also die Einträge pro Monat in Spalte B zählt)
Mein Code hat aber momentan (Mein Datum 1 ist der 29.9., in Spalte P schreibe ich 12 Monate) das Ergebnis, dass neben "Dezember", wo eigentlich "2" stehen sollte, "98" steht, bei Februar, wo eigentlich "2" stehen sollte, ist die Zelle leer.
Anscheinend findet der in den leeren Zellen auch irgendwas (Wenn ich nur B2 bis B4 auslese, die auch alle befüllt sind, dann erhalte ich richtigerweise bei Dezember 2, Februar aber trotzdem leer), habe auch schon versucht mit "While Not IsEmpty" nur die befüllten Zeilen auslesen zu lassen, das hat aber eine Endlosschleife produziert.
Ich hoffe das Problem ist einigermaßen verständlich erklärt und jemand kann mir helfen :)
Mein Code:
For k = 0 To (Auswertung.ComboBox1 * 12 - 1)
If (Month(Datum1) + k) < 13 Then
For j = 1 To 100
If (Month(ActiveSheet.Range("B" & (j + 1)))) = (Month(Datum1) + k) Then
ActiveSheet.Range("Q" & (k + 2)) = ActiveSheet.Range("Q" & (k + 2)) + 1
End If
Next j
End If
If (Month(Datum1) + k) > 12 And (Month(Datum1) + k) < 25 Then
For m = 1 To 100
If (Month(ActiveSheet.Range("B" & (m + 1)))) = l Then
ActiveSheet.Range("Q" & (k + 2)) = ActiveSheet.Range("Q" & (k + 2)) + 1
End If
Next m
End If
If (Month(Datum1) + k) > 24 Then
For l = 1 To 4
If (Month(ActiveSheet.Range("B" & (l + 1)))) = l Then
ActiveSheet.Range("Q" & (k + 2)) = ActiveSheet.Range("Q" & (k + 2)) + 1
End If
Next l
End If
Next k
Vielen Dank im Voraus!
Grüße
|