Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
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 nur einmal am Tag

VBA nur einmal am Tag
chris58
Hallo !
Ich ersuche um Eure Hilfe. Ich habe dieses VBA das auch funktioniert. Die Daten werden mehrmals am Tag abgeglichen. Jedoch sollen die Daten nur einmal am Tag in das Tabellenblatt "Statistik" geschrieben werden. Was muß ich ändern, damit nur einmal geschrieben wird.
Danke für Eure Antwort
chris
Sub Protokoll()
Dim i As Long
Const NewConstSheet As String = "Statistik"
Dim bfound As Boolean
Dim sMerk As String
Dim sMaxZeile As Long
Dim TB As Worksheet
Application.ScreenUpdating = False
'Prüfen ob Tabelle NewConstSheet schon angelegt ist
For i = 1 To ActiveWorkbook.Sheets.Count
If ActiveWorkbook.Sheets(i).Name = NewConstSheet Then
bfound = True
Exit For
End If
Next i
'wenn nicht dann anlegen
If bfound = False Then
sMerk = ActiveWorkbook.ActiveSheet.Name
ActiveWorkbook.Sheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveWorkbook.ActiveSheet.Name = NewConstSheet
ActiveWorkbook.Sheets(sMerk).Activate
End If
Set TB = ActiveWorkbook.Sheets(NewConstSheet)
'nächste leere Zeile ermitteln
sMaxZeile = TB.Cells(TB.Rows.Count, 1).End(xlUp).Row + 1
'Daten in neue Tabelle übertragen
TB.Cells(sMaxZeile, 1) = ActiveWorkbook.ActiveSheet.Range("D8")
TB.Cells(sMaxZeile, 2) = ActiveWorkbook.ActiveSheet.Range("B8")
TB.Cells(sMaxZeile, 3) = ActiveWorkbook.ActiveSheet.Range("B11")
TB.Cells(sMaxZeile, 4) = ActiveWorkbook.ActiveSheet.Range("B12")
TB.Cells(sMaxZeile, 5) = ActiveWorkbook.ActiveSheet.Range("C23")
TB.Cells(sMaxZeile, 6) = ActiveWorkbook.ActiveSheet.Range("C24")
TB.Cells(sMaxZeile, 7) = ActiveWorkbook.ActiveSheet.Range("B22")
TB.Cells(sMaxZeile, 8) = ActiveWorkbook.ActiveSheet.Range("C22")
TB.Cells(sMaxZeile, 9) = ActiveWorkbook.ActiveSheet.Range("K25")
TB.Cells(sMaxZeile, 10) = ActiveWorkbook.ActiveSheet.Range("K28")
Application.ScreenUpdating = True
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA nur einmal am Tag
17.12.2011 16:36:21
Hajo_Zi
Hallo Chris,
schreibe den Ausführungstag in eine Zelle und Prüfe die Zelle bei Start.

AW: VBA nur einmal am Tag
17.12.2011 17:56:52
chris58
Hallo !
In D8 steht =heute()...............
aber es wird dann bei jeder Aktualisierung das Script ausgeführt.
chris
AW: VBA nur einmal am Tag
17.12.2011 17:59:52
Hajo_Zi
Hallo chris,
lese meinem Beitrag nochmal genau, von der Funktion Heute() habe ich nichts geschrieben.
Gruß Hajo
Das Tagesdatum musst du mit einer VBA-...
18.12.2011 00:16:13
Luc:-?
…Ereignisprozedur in die fragliche Zelle schreiben, Chris,
nicht mit der Fkt HEUTE, denn die ist volatil, d.h., wird bei jedem Start und jeder Änderung in der Mappe aktiv, was dann wohl die fraglichen Vorgänge auslöst. Es bietet sich natürl Workbook_Open an. Dort kannst du das Ergebnis der vbFkt Now - nur den ganzzahligen Datumsteil, also Int(Now) - mit dem Inhalt der Zelle vgl und den nur dann überschreiben, wenn sich beide unterscheiden. Gleichzeitig kann in diesem Fall eine Globalvariable auf True - ggf erst bei Workbook_Close, das kannst du eher beurteilen - gesetzt wdn, die die fragliche Aktion bewirkt.
Gruß + schöVierAd, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige