Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Platzhalter für Jahreszahl

Makro Platzhalter für Jahreszahl
13.03.2015 10:26:54
Max
Hallo,
ich benötige eure Hilfe bei der Anpassung von einem Makro, welches mit dem Makrorekorder entstanden ist.
In einer Arbeitsmappe wertet ein Tabellenblatt "Übersicht" ein weiteres Tabellenblatt "2015" aus. Alle Formeln in der "Übersicht" beziehen sich also auf "2015" : bspw. ='2015'!AH50. Die Tabellenblätter für die nächsten Jahre liegen vor und sind ausgeblendet.
Nächstes Jahr soll die "Übersicht" das Tabellenblatt "2016" auswerten. Dafür wären über suchen/ersetzen die Formeln auf 2016 zu ändern. Da Excel-unerfahrene Anwender
mit dieser Arbeitsmappe umgehen, scheidet diese Möglichkeit aus.
Ein Makro, welches über eine Schaltfläche ausgelöst wird, müßte ebenfalls bei Jahreswechsel manuell angepaßt werden.
Daher suche ich für die Jahreszahlen im Makro einen Platzhalter. Nach meiner bisherigen Suche im Internet geht es evtl. mit Year (Now) oder (Year (Now)+1).
Aber praktisch bekomme ich es nicht hin.
Vielleicht hat jemand von Euch einen Tip für mich.
Sub Jahreswechsel()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Sheets("2016").Visible = True
Cells.Replace What:="2015", Replacement:="2016", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
Für eure Mühe vorab schon mal vielen Dank.
Mit freundlichen Grüßen
Max

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du warst auf der richtigen Spur...
13.03.2015 10:37:01
Michael
Hallo Max,
:-)... Das kannst Du so machen:
Sub Jahreswechsel()
Dim AltJahr As String
Dim Heuer As String
Application.ScreenUpdating = False
ActiveSheet.Unprotect
AltJahr = Year(Date) - 1
Heuer = Year(Date)
Sheets(Heuer).Visible = True
Sheets(Heuer).Cells.Replace What:=AltJahr, Replacement:=Heuer, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
Habe es direkt in Dein Makro eingepflegt, das Makro an sich hab ich nicht groß überarbeitet.
Klappt?
LG
Michael

Anzeige
AW: Du warst auf der richtigen Spur...
13.03.2015 11:26:13
Max
Hallo Michael,
danke für die schnelle Antwort!
Allerdings blendet das Makro nur das Blatt "2016" ein und nimmt ansonsten keinerlei Änderungen vor.
Da wir noch nicht 2016 schreiben, mußte ich zum ausprobieren AltJahr in = Year(Date)ändern und Heuer
in = Year(Date) + 1.
Ich habe mal ein Muster hochgeladen:
https://www.herber.de/bbs/user/96342.xls
Bei funktionierendem Makro müßte das Blatt "2016" eingeblendet sein und in der "Übersicht" Zahlen
und Formeln auf 2016 lauten.
Vielleicht weißt du, woran es liegt.
Mit freundlichen Grüßen
Max

Anzeige
Das Makro nimmt schon Änderungen vor...
13.03.2015 11:43:26
Michael
Max,
Allerdings blendet das Makro nur das Blatt "2016" ein und nimmt ansonsten keinerlei Änderungen vor.
nur eben noch nicht im Tabellenblatt "Übersicht"; das war aber auch in Deinem Bsp.-Code nicht so, habe das daher nicht überprüft. Hier der geänderte Code:
Sub Jahreswechsel()
Dim AltJahr As String
Dim Heuer As String
Application.ScreenUpdating = False
ActiveSheet.Unprotect
AltJahr = Year(Date)  '2015
Heuer = Year(Date) + 1   '2016
Sheets(Heuer).Visible = True
Sheets("Übersicht").Cells.Replace What:=AltJahr, Replacement:=Heuer, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
Entscheidend ist hier die Zeile
Sheets("Übersicht").Cells.Replace ...
die jetzt im richtigen Tabellenblatt ersetzt.
Da wir noch nicht 2016 schreiben, mußte ich zum ausprobieren AltJahr in = Year(Date)ändern und Heuer
in = Year(Date) + 1.

Naja, das ist etwas quergedacht - ich würde diesbezüglich nicht den Code ändern auf +1, sondern eher mit einer Bsp.-Datei arbeiten die den Jahreswechsel von 2014 auf 2015 simuliert, d.h. die Tabellenblätter 2014 und 2015 (ausgeblendet) erzeugen, und in den Zellformel "2014" durch "2015" ersetzen lassen; dann kannst Du die richtige Funktion überprüfen, und wenn's passt, ist der Code dann für die Folgejahre ebenso anwendbar.
Und ja: DU musst ein bisschen was an Arbeit/Testung selbst übernehmen, das bleibt Dir nicht erspart.
Gib Bescheid, ob's jetzt klappt wie gewünscht.
LG
Michael

Anzeige
Erledigt
13.03.2015 11:54:45
Max
Hallo Michael,
es funktioniert exakt so wie ich es mir vorgestellt habe. Vielen Dank für deine Hilfe
und noch ein schönes Wochenende!
Gruß
Max

Super, danke für die Rückmeldung
13.03.2015 12:13:10
Michael
.

AW: Makro Platzhalter für Jahreszahl
13.03.2015 11:35:47
Rudi
Hallo,
so einfach ist das nicht.
Was, wenn sich eine Formel auf 2015!A2015 bezieht? Dann wird 2016!A2016 daraus. Oder =A1+2015 wird zu A1+2016 etc.
Gruß
Rudi

AW: Makro Platzhalter für Jahreszahl
13.03.2015 11:47:33
Max
Hallo Rudi,
danke für den Hinweis, aber die Tabellenblätter die ausgewertet werden ("2015", "2016" etc.)
enden alle bei Zeile 49.
Es geht wirklich nur um die Jahreszahlen der Tabellenblattbezeichnungen.
In der "Übersicht" finden auch keine Berechnungen statt und ein Summenergebnis in Höhe einer
Jahreszahl wäre absoluter Zufall, da alle Summen in der Regel kleiner =1000 sind.
Gruß
Max

Anzeige
Das dachte ich mir, dann ist...
13.03.2015 11:52:19
Michael
Hi Max,
das Makro schon zu verwenden; habe Dir oben angepasst, dass die Ersetzungen im Blatt "Übersicht" vorgenommen werden.
LG
Michael

Stimmt, aber das Problem besteht auch...
13.03.2015 11:48:54
Michael
Hallo Max und Rudi,
... wenn die Ersetzung manuell durchgeführt wird. Ich gehe aber davon aus, dass Max, der seine Formeln und den Tabellenumfang kennt, dies bis jetzt nicht zum Verhängnis wurde; und wenn die Tabelle das manuell bis jetzt ohne Probleme zulässt, kann man das schon automatisieren.
Freilich, ob's so sinnvoll und v.a. "zukunftsfähig" ist, ist hier die Frage, die aber nur Du, Max, beantworten kannst!
LG
Michael

Anzeige
Fummeln aufgegeben
13.03.2015 12:27:31
Michael
Hallo zusammen,
um solche Fummelein zu umgehen, kopiere ich derartige Datein jedes Jahr auf einen neuen Namen.
Der kann ja ruhig das Jahr an "vereinbarter" Stelle enthalten, auf das man ja via ZELLE ohne VBA Zugriff hat, also meinetwegen BlaBla_2015.xlsx.
Bezüge müssen dabei nicht geändert werden, ein anderer Vorteil ist aber auch, daß der Anwender nicht versehentlich in einem alten Jahr Änderungen vornimmt ("ups, habe grad im falschen Jahr 5 Werte geändert, *was* stand da bloß vorher drin?!"), die man nie mehr nachvollziehen könnte. Das ist dann quasi "weggeschrieben".
Man kann ja ne leere Vorlage erstellen, nur mit Formeln und ohne Daten. Oder gleich Kopien für die nächsten 10 Jahre erstellen; bis dahin wird sowieso wieder irgendwas anderes geändert.
Schöne Grüße,
(noch ein) Michael

Anzeige
Das mag natürlich manchmal...
13.03.2015 12:35:02
Michael
Hi Michael,
...der einfachste Weg sein. Was viele Benutzer so alles anrichten können, oder?!
LG
(der andere) Michael

Vor allem, wenn sie....
14.03.2015 12:05:36
Michael
...in Panik geraten. Mit Undo oder Schließen ohne Speichern ist ja das meiste wieder gut.
Aber es passiert mir selber manchmal, daß ich irgendeinen Murks mache und weiterarbeite, und bis es mir dann auffällt, isses mit undo auch nimmer ohne Weiteres getan.
Naja, man sollte halt entweder telefonieren oder häcken.
LG an den (anderen) Michael

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige