Tonisailer schrieb am 17.August.2010, 10:11:13 in der Kategorie pc.sw.office
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim BasisName As String
Dim Lfd_Jahr As Integer
Dim StartJahr As Integer
Dim EndJahr As Integer
Dim i
Dim TabName As String
Lfd_Jahr = Right(Date, 4)
StartJahr = Right(ActiveSheet.Name, 4) + 1
EndJahr = Lfd_Jahr + 5 \'letzte existierende Tabelle
Dim QuellZelle As String \'Zielzelle
Dim Wert As Double \'Variable zur Aufnahme des Eingabewertes
QuellZelle = Target.Address
Wert = Target.Value
BasisName = \"KiGa_\"
TabName = BasisName & Lfd_Jahr \'KiGa2010
\'Verhindern, dass Veränderungen an der aktuellen Tabelle an die folgenden Tabellen weitergeben werden
If ActiveSheet.Name = TabName Then Exit Sub
For i = StartJahr To EndJahr \'z.B. bei 2010 von 2011 bis 2015
MsgBox \"Startjahr: \" & StartJahr & \"Endjahr: \" & EndJahr
If TabelleVorhanden(BasisName & StartJahr) = False Then Exit Sub \'Wenn keine Tabelle existiert
Sheets(BasisName & StartJahr).Range(QuellZelle).Value = Wert
StartJahr = StartJahr + 1
Next
End Sub
Ändere ich nun eine Zelle in Tabelle 2011, erhalte ich vom Code in Tabelle 2012 eine Endlosschleife; das Startjahr in Tabelle 2012 bleibt dann immer gleich. Wo liegt mein Fehler?
Hinweis:
Ich muss die Geschichte variabel halten, da jedes Jahr eine neue Tabelle (Beispiel: im Jahr 2011 KIGA_2016) hinzukommt.
Zur Überprüfung, ob eine Tabelle vorhanden ist, existiert eine Funktion namens TabelleVorhanden.
Bin für jeden Tipp dankbar.
Gruß aus dem derzeit verregneten Bergischen Land
Toni