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

Archivierung per VBA

Archivierung per VBA
10.10.2019 17:22:31
Rudi
Hallo Zusammen
Ich möchte eine einfache automatische Archivierung einbauen.
Sobald in Tabelle1 in den Zellen V10, V11 und V12 jeweils eine «1» (Formelbasiert) drinsteht soll mir VBA automatisch die in der gleichen Tabelle den in Zelle M13 vorhandenen Betrag (auch Formelbasiert) in Tabelle6 wie folgt archivieren:
A2= Datum (Heute)
B2= Zeit
C2 = Betrag aus Tabelle1, Zelle M13
Da es ein VBA Code ist der ja auf Standby ständig läuft, da abwartend bis in Zelle V10, V11 und V12, der Wert «1» drin ist, sollte bei bereits bestehendem Eintrag in der Archivierung mit heutigem Datum nichts mehr eingetragen werden. Erst am nächsten Tag, soll es mir den Betrag/Archivierung in Tabelle6 jeweils um eine Zeile runterschieben und in Zelle A2, A3 den neuen Wert mit heutigem Datum anzeigen.
Vielen lieben Dank und Grüsse
Rudi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Archivierung per VBA
10.10.2019 21:34:50
Regina
Hi,
das könnte man mit dem Calculate-Ereignis angehen. Ich habe Dir mal einen Code gebastelt, der wenn in V10 - V12 je eine 1 errechnet wurde und in Tabelle 6 in zeile 2 noch nicht das aktuelle Tagesdatum steht, den Wert aus Tabelle1 M13 mit Datum und Uhrzeit in Zeile 2 von tabelle6 schreibt. Vorhandene Zeilen werden nach nuten geschoben:
Private Sub Worksheet_Calculate()
Dim lng_letzte_zeile As Long
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Set obj_wks_ziel = Worksheets("Tabelle6")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, 1).End(xlUp).Row ' Letzte zeile im Zielblatt  _
ermitteln
' Wenn im Zielblatt das aktuelle Datum schon vorhanden ist Abbruch
If obj_wks_ziel.Cells(2, 1) = Date Then Exit Sub
With obj_wks_ziel
If obj_wks_quelle.Range("V10").Value = 1 And obj_wks_quelle.Range("V11").Value = 1 And  _
obj_wks_quelle.Range("V12").Value = 1 Then
.Rows("2:2").Insert
.Cells(2, 1) = Date
.Cells(2, 2) = Now
.Cells(2, 3) = obj_wks_quelle.Range("M13").Value
End If
End With
End Sub
Hier auch die Datei, damit Du siehst von welchen gegebenheiten ich ausgegangen bin (nächstes Mal bitte Beispieldatei hochladen). Code ist in Tabelle1 hinterlegt:
https://www.herber.de/bbs/user/132472.xlsm
Gruß
Regina
Anzeige
AW: Archivierung per VBA
11.10.2019 13:39:10
Rudi
Hallo liebe Regina,
Tolle Sache!!! Vielen Dank.
Calculate sollte sich ständig selber ausführen?
Sobald ich die Werte auf 1 abändere passiert in Tabelle6 leider nichts.
Es wird also nichts eingetragen.
Muss ich das manuell anstossen den Macro?
Danke und Gruss
Rudi
AW: Archivierung per VBA
11.10.2019 13:43:31
Regina
Hi, Calculate springt an, wenn neu berechnet wird. Wenn Du also einen Wert eingibst, der bei in einer Formel eine neue Berechnung auslöst. Ich habe das so verstanden, das die "1" durch eine Formel entsthet und nich tdurch eine Werteingabe in V10 - V12. Bei einer Werteingabe müsste das Worksheet_Change-Ereignis ran.
Gruß
Regina
Anzeige
AW: Archivierung per VBA
11.10.2019 13:48:33
Regina
... lade sonst mal deinen Beispielmappe hoch.
VG
Regina
AW: Archivierung per VBA
11.10.2019 13:53:24
Torsten
Hallo Rudi,
du darfst die Werte nicht manuell abaendern. Das ist dann keine Worksheet_Calculate mehr, nur ein Worksheet_Change.
Du musst schon, wie von dir vorher beschrieben, die Werte in Spalte V ueber Formel veraendern. Dann funktioniert das auch.
Gruss Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige