Archiv
Ansicht:   
Suche   erweiterte Suche

Nachricht aus dem Archiv

Tonisailer schrieb am 17.August.2010, 10:11:13 in der Kategorie pc.sw.office

Excel 2003 per VBA Änderungen in Folgetabellen übernehmen

Hallo Excel-Experten,
nun stehe ich wieder vor einem komplexen Problem, vielleicht hat jemand in diesem Forum dazu eine Idee.

Folgendes Szenario:

Excel-Datei mit diversen Tabellen, darunter gleich strukturierte Tabellen mit dem Namen KiGA_2008, KIGA_2009 bis KIGA_2015

In den Tabellen 2008 bis 2010 stehen Echtdaten; 2011 bis 2015 sind Kopien von 2010.

Nun werden vom Anwender in den Tabellen 2011 bis 2015 sporadisch Werte geändert; diese Änderungen sollen automatisch in den Tabellen der jeweiligen Folgejahre übernommen werden.

Beispiel:
1. In Tabelle 2012 wird der Wert C5 geändert. Die Änderungen sollen in den gleichen Zellen der Tabellen 2013, 2014 und 2015 übernommen werden.
2. In Tabelle 2013 wird der Wert D8 geändert. Automatische Änderung in den Tabellen 2014 und 2015.

Habe dazu in Tabelle 2011 folgenden Code geschrieben, den ich in den Tabellen 2012 bis 2015 kopiert habe:

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

Archiv
Ansicht:   
Suche   erweiterte Suche
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz