Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
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

VBA-Sheet ab Datum 31.12.2017 kopier werte einsetz

VBA-Sheet ab Datum 31.12.2017 kopier werte einsetz
06.09.2017 15:22:55
florian
Sehr geehrte VBA-Gemeinde,
folgendes Problem:
Ich habe 9 Sheets mit vielen Sverweisen und weiteren Berechnungen (Die Dateneingabe - grundlage der Berechnungen erfolgt über weitere Eingabe-Sheets aus Datev heraus per Copy and paste).
Jetzt sollen die Sheets(weil die Berechnungen nur bis zum z.B. 31.12.2017) richtig rechnet, beim öffnen nach diesem Datum alle Inhalte kopieren und als Wert wieder ausgeben (als Nachweis). Dies dient des weiteren auch zum Schutz vor Diebstahl meiner geisitgen Arbeit.
Das Datum (z.B. 31.12.2017) kann in der Zelle B2 eingetragen werden, bzw aus der SystemUhr übernommen werden.
Hat hier jemand eine Lösung?
Herzlichen Dank von einem VBA Neuling
euer Florian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Falsche Ergebnisse nach 31.12.2017
06.09.2017 15:31:42
Robert
Hallo florian,
wie ich das verstehe, wirst Du ein Problem bekommen. Grundsätzlich ist es kein Problem, in Abhängigkeit vom Datum die Zellen, die Formeln enthalten, durch deren Werte zu ersetzen. Da dies aber nach dem 31.12.2017 geschehen soll, ab diesem Datum aber falsche Berechnungen erfolgen, werden dann nach diesem Termin auch die falschen Formelergebnisse als Wert eingefügt. Wenn die Berechnungen nur bis zum 31.12.2017 richtig sind, müssen daher bis zu diesem Termin die Formeln durch Werte ersetzt werden.
Gruß
Robert
AW: Falsche Ergebnisse nach 31.12.2017
06.09.2017 17:00:21
florian
Hallo Robert,
Danke. Vielleicht denke ich gerade falsch, aber die Datei wird bis zum (z.B. 31.12.2017) mit neuen Werten per copy and paste befüllt. Sollte eine Berechnung erfolgen, bezieht die sich auf die Werte bis zum 31.12.2017.
Man kann es auch anders lösen:
Wenn ich weiß wo ich in dem Code das Ablaufdatum einfügen kann, so dass nach diesem Datum (abgleich mit Systemuhr) keine Formel mehr vorhanden ist sondern nur noch die berechneten Werte, so ist der Spatz gefangen.
In Excel würde ich das so schreiben:
B2= heute()
Wenn(b2größer gleich 41301 - entspricht dem 01.01.2018- dann kopiere beim öffnen Sheet Statistik_Bearbeiten Zellen a3 bis ag356 und füge die berechneten Werte in a3 bis ag356 ein.
Leider fehlen mir die VBA Kenntnisse.
(Das Fleisch ist willig aber der Geist ist schwach)
Anzeige
AW: Falsche Ergebnisse nach 31.12.2017
06.09.2017 17:22:44
Robert
Hallo,
folgendes Makro ersetzt ab dem 01.01.2018 auf allen Tabellenblätter die Formeln durch die entsprechenden Werte
Sub Formeln_ersetzen()
Dim sh As Object
If Date >= CDate("01.01.2018") Then
For Each sh In Worksheets
sh.UsedRange = sh.UsedRange.Value
Next
End If
End Sub
Gruß
Robert
AW: Falsche Ergebnisse nach 31.12.2017
07.09.2017 15:20:00
florian
Hallo Robert,
der code ist (zusammen mit dem vorherigen automatischen Code für Seitenschutz) wie folgt:
Sub Workbook_Open()

Sub Formeln_ersetzen()
Dim sh As Object
If Date >= CDate("06.09.2017") Then
For Each sh In Worksheets
sh.UsedRange = sh.UsedRange.Value
Next
End If
End Sub

'für alle Blätter mit Passwortschutz
Dim ws As Worksheet
For Each ws In Worksheets
ws.Protect UserInterfaceOnly:=True, Password:="sax" 'Passwort anpassen
ws.EnableAutoFilter = True 'ermöglicht Autofilter
ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next ws
End Sub
Es wird gemeldet: Fehler beim Komilieren - End of

Sub erwartet
Was muss ich tun?
Vielen Dank

Anzeige
AW: Falsche Ergebnisse nach 31.12.2017
07.09.2017 16:03:46
Robert
Hallo florian,
falls Dein zusätzlicher Code auch erst ab dem 01.01.2018 ausgeführt werden soll:
Private Sub Workbook_Open()
Dim sh As Object
If Date >= CDate("01.01.2018") Then
For Each sh In Worksheets
sh.UsedRange = sh.UsedRange.Value 'Formeln werden durch deren Werte ersetzt
sh.Protect UserInterfaceOnly:=True, Password:="sax" 'Passwort anpassen
sh.EnableAutoFilter = True 'ermöglicht Autofilter
sh.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next
End If
End Sub
Soll Dein Code dagegen immer und nur das Ersetzen der Formeln durch deren Werte ab dem 01.01.2018 erfolgen, dann:
Private Sub Workbook_Open2()
Dim sh As Object
For Each sh In Worksheets
If Date >= CDate("01.01.2018") Then
sh.UsedRange = sh.UsedRange.Value 'Formeln werden durch deren Werte ersetzt
End If
sh.Protect UserInterfaceOnly:=True, Password:="sax" 'Passwort anpassen
sh.EnableAutoFilter = True 'ermöglicht Autofilter
sh.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next
End Sub
Gruß
Robert
Anzeige
AW: Falsche Ergebnisse nach 31.12.2017
07.09.2017 16:44:06
florian
Hallo Robert, ich habe mal einen screenshot gemacht. Irgendetwas masche ich falsch weil die Formeln sind noch leserlich und ich habe das Datum auf den 06.09.2017 gestellt
AW: Falsche Ergebnisse nach 31.12.2017
07.09.2017 18:35:12
Robert
Hallo Florian,
wo gibst Du denn denn Code ein. Der darf nämlich nicht in einem normalen Modul stehen sondern muss in dem Microsoft Excel Object "Diese Arbeitsmappe" stehen. Bei dem zweiten von mir geposteten Code muss es in der ersten Zeile auch Private Sub Workbook_Open() (also ohne die 2) heißen.
Dann müsste der Code beim Öffnen der Datei ausgeführt werden, vorausgesetzt natürlich, das automatische Ausführen von Makros ist nicht aus Datenschutzgründen ausgeschlossen oder wird vom jeweiligen Nutzer durch drücken der Shift-Taste unterdrückt.
Allerdings habe ich nicht bedacht, dass die Tabellen ja offensichtlich geschützt sind. Dieser Schutz muss als erstes in der For-Schleife mit
sh.Unprotect Password:="sax"
wieder aufgehoben werden damit an den Zellinhalten was geändert werden kann.
Gruß
Robert
PS:
Wenn Du einen Screenshot machst, habe ich nur etwas davon, wenn Du den auch hier einstellst.
Anzeige
AW: Falsche Ergebnisse nach 31.12.2017
08.09.2017 01:38:52
florian
Userbild
AW: Falsche Ergebnisse nach 31.12.2017
08.09.2017 01:45:44
florian
Hallo Robert, kaum macht man es richtig ....schon funktioniert es. Ich Danke Dir ganz herzlich.
Falls mal Hilfe bei DATEV benötigt wird, freue ich mich dir helfen zu können.
viele Grüße Florian
AW: VBA-Sheet ab Datum 31.12.2017 kopier werte einsetz
06.09.2017 17:29:49
ChrisL
Hi Florian
Überlege noch einmal was Robert dir gesagt hat oder probiere es wenigstens mal vorher mit geändertem Datum aus ;)
Folgende Idee. Alle Formeln, die sich auf das Tagesdatum beziehen mit einer WENN Formel eränzen:
=WENN(HEUTE()<DATUM(2018;1;1);HEUTE();DATUM(2017;31;12))
Ein Makro als Diebstahl-Sicherung ist m.E. nicht sinnvoll, weil man die Datei ja auch ohne Makros starten kann.
cu
Chris
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige