AW: Schleifen mit Bedingungen
21.07.2004 10:04:30
Harald
Hallo Claudi,
sorry, hat etwas gedauert, auch Dein Problem zu verstehen.
Ich gebe Dir mal folgendes Gerüst an die Hand:
Option Explicit
Option Base 1 ' Felder fangen bei 1 an - Abweichung vom Default!
Sub test()
Dim WS7, WS8 As Worksheet
Dim zeile, spalte As Integer
Const Maxtage = 10 ' hier max. Anzahl von zus. Tagen definieren
Const ErsteSpalte = 1
Dim Anfangsjahr, EndJahr, Tag, Jahr As Integer
Dim Monate(Maxtage) As Integer ' Liste der Monate rechts vom Jahr
Dim Tage(Maxtage) As Integer ' Liste der Tage rechts vom Jahr
Dim AnzahlTage As Integer
Set WS7 = Worksheets("Tabelle1")
Set WS8 = Worksheets("Tabelle2")
Anfangsjahr = Year(Date) ' Jahr des heutigen Datums
For zeile = 1 To 3
' Erster Durchlauf: Finde alle zusätzlichen Tage in der Zeile
AnzahlTage = 0
EndJahr = WS7.Cells(zeile, 1) ' Endjahr in Spalte 1
For spalte = ErsteSpalte + 1 To ErsteSpalte + 1 + Maxtage Step 2
If WS7.Cells(zeile, spalte) <> 0 Then 'noch ein Tag in der Liste
AnzahlTage = AnzahlTage + 1 ' 1 Tag dazugekommen
Tage(AnzahlTage) = WS7.Cells(zeile, spalte) ' Spalte=Tag
Monate(AnzahlTage) = WS7.Cells(zeile, spalte + 1) ' Spalte+1 = Monat
End If
Next spalte
' Zweiter Durchlauf: konstruiere Ergebnis
spalte = 1
For Jahr = Anfangsjahr To EndJahr
For Tag = 1 To AnzahlTage
WS8.Cells(zeile, spalte) = DateSerial(Jahr, Monate(Tag), Tage(Tag))
spalte = spalte + 1
Next Tag
Next Jahr
Next zeile
End Sub
Gruß Harald