Sheets().Select und Schleifen-Problem
21.10.2004 21:42:24
Matze
ich habe wieder einmal ein Problem und hoffe jemand hat eine gute Lösungsidee.
Meine Idee ist es regelmäßig fällige Zahlungen in Excel per Makro eintragen zu lassen. Hierzu stehen auf dem Blatt Einstellungen in der Spalte ab A3 die Produkte (die Bezeichnung stimmt mit den entsprechenden Tabellennamen überein). In der Spalte B steht das Datum der letzten Zahlung, in Spalte C die Häufigkeit, in Spalte D wird das nächste Fälligkeitsdatum gerechnet. In Spalte E steht die Anzahl der Zellen, die auf dem jeweiligen Produktblatt kopiert werden muss.
Hier meine beiden Probleme:
1. Der aus der Spalte A richtig übernommene Blattname löst ein Fehler: "Index außerhalb des gültigen Bereichs (Fehler 9)" aus.
2. Möchte ich eine Schleife haben, die so oft durchlaufen wird, bis "If Date >= Einstellungen.Cells(intZaehler, 4).Value" erfüllt ist. Ich denke, dass ich dies über eine Do Loop-Schleife realisieren muss.
Danke im voraus für die Tipps
Matze
Hier noch das eingesetzte Modul:
Sub Zahlungspruefung()
Set Einstellungen = Worksheets("Einstellungen")
Dim intAnzahlZeilenEinstellung As Integer
Dim intAnzahlZeilenProdukt As Integer
Dim intZaehler As Integer
Dim intAnzahlZellen As Integer
Dim Blatt As String
Worksheets("Einstellungen").Select
' Anzahl der Eintraege ermitteln
intAnzahlZeilenEinstellung = Einstellungen.UsedRange.Rows.Count
For intZaehler = 3 To intAnzahlZeilenEinstellung
' Anzahl der zu kopierenen Zellen uebergeben
intAnzahlZellen = Einstellungen.Cells(intZaehler, 5).Value
' diese Schleife wird solange durchlaufen, bis die naechste Zahlung in der Zukunft liegt
If Date >= Einstellungen.Cells(intZaehler, 4).Value Then
Blatt = Cells(intZaehler, 1).Value
Sheets(Blatt).Select
' finde letzte Zeile, kopiere sie und fuege sie eine Zeile tiefer ein
intAnzahlZeilenProdukt = 0 ' Wert auf 0 setzen
intAnzahlZeilenProdukt = ActiveSheet.UsedRange.Rows.Count
Range(Cells(intAnzahlZeilenProdukt + 1, 1), Cells(intAnzahlZeilenProdukt + 1, intAnzahlZellen)) = _
Range(Cells(intAnzahlZeilenProdukt, 1), Cells(intAnzahlZeilenProdukt, intAnzahlZellen))
' Datum fuer letzte Zahlung hochsetzen
Call Datumsaenderung(intZaehler)
Else
End If
Next
End Sub