Ich habe mehrere Tabellen, in die sich monatlich ändernde Werte fest eingegeben werden. Dementsprechend ändert sich der Name der Tabellen bzw. Reiter auch monatlich. In einer zweiten Tabelle B, verteilt auf die Reiter Januar - Dezember, werden über allerlei Formeln die verschiedensten Ergebnisse aus den Werten der ersten Tabellen automatisch pro Monat dargestellt. Da es sich um sehr viele Zellen handelt, und ich nicht jedesmal den monatlich neuen Pfad händisch in die Formeln eingeben wollte, habe ich ein Modul geschrieben, welches den neuen Pfad der Tabellen gegen den alten austauscht - somit bleiben mir die Formeln erhalten und ich spare mit die Tipperei.
Nun zum Problem: Damit das ganze funktioniert, wurde vor grauer Urzeit einmal jede Formel für jeden Monat einmal händisch eingetragen. D.h., zum Ende des Jahres 2008 waren alle Werte korrekt eingetragen. Nun speicher ich für jeden Monat in 09 entsprechnd meine Tabellen mit Monatsnamen ab, lasse in Tabelle B mein Programm laufen und schon aktualisieren sich dort die Werte. ABER: in den restlichen Monaten bis zum Jahresende stehen immer noch die Vorjahreszahlen - d.h., ich kann keine vernünftige Prognose für das neue Gesamtjahr erkennen.
Gibt es eine Möglichkeit, die alten Werte automatisch auf Null zu setzen, ohne die Formeln und Zuweisungen zu verlieren. z.B. "Ersetze alten Pfad durch neuen Pfad mit den jeweiligen Werten, wenn neuer Pfad nicht vorhanden, dann setze alle Werte gleich Null"?
--> Mein derzeitiges Pfad ersetzen Script sieht so aus
Sub Monat_aendern()
Dim fd1 As String
Dim fd2 As String
Dim oh1 As String
Dim oh2 As String
Application.ScreenUpdating = False
' Selektiert den Gesamtbereich
Range("B7:L41").Select
' Definiert die Variablen fd1 und fd2 sowie oh1 und oh2
fd1 = Range("c46").Value
fd2 = Range("c47").Value
oh1 = Range("C50").Value
oh2 = Range("C51").Value
' Ersetzt die Vormonate für Fd und Od mit den aktuellen Monaten
Selection.Replace What:=fd1, Replacement:=fd2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:=oh1, Replacement:=oh2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
' Selektiert den angegebenen Bereich
Range("M46:O50").Select
' Definiert die Variablen fd1 und fd2 sowie oh1 und oh2
fd1 = Range("c46").Value
fd2 = Range("c47").Value
oh1 = Range("C50").Value
oh2 = Range("C51").Value
' Ersetzt die Vormonate für Fd und Od mit den aktuellen Monaten
Selection.Replace What:=fd1, Replacement:=fd2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:=oh1, Replacement:=oh2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Application.ScreenUpdating = True
Range("c41").Select
End Sub
|