Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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 aktualisierung, Fehler danach

VBA aktualisierung, Fehler danach
29.10.2019 17:06:38
Arek
Hallo an die Experten,
ich habe Probleme nach der Aktualisierung aus csv Dateien. Eine Tabelle wird von mehreren csv Dateien gefüttert. Das Tool wurde vor Jahren mal geschrieben, ich arbeite seit kurzen erst damit und hat nach meinem Wissen schon immer diese verhalten.
Man startet Excel, die Daten werden aus den csv Dateien ohne Fehler kopiert, in Tabellenform. Aus diesen Daten werden bestimmte Zellen gefüttert (Summe, Datum und andere Formeln gebildet) und aus diesen dann nach Track_History geschrieben (Diese dienen der Visualisierung und die aus Track_History werden für Diagramme und "History" benötigt).
Leider erscheinen in Track_History teilweise Daten von „gestern“ obwohl z.B. in der Tabelle „BacklogList - F“ alles stimmt.
Jeden Morgen wird dann in Track_history die aktuelle Zeile gelöscht, das komplette Makro nochmal gestartet per Schaltfläche und jetzt stimmen die Daten auch in Track_History. Habe versucht das mit schleifen oder zwischen durch Speichern, abzufangen brachte aber keine Verbesserung.
Sieht jemand ob da irgendwie einen logischer Fehler oder irgendwie eine Verbesserungsmöglichkeit?
Leider müsste ich zu viel „schwärzen“ um die Datei direkt hochzuladen.
Private Sub Workbook_Open()
Worksheets("Overview").Activate
Call Query_Refresher
End Sub

Als Modul:
Public Sub Query_Refresher()
'Zusätzliche schleife
x = 0
Do
x = x + 1
Cells(x, 57).Value = x
Worksheets("BacklogList - F").Range("D4").Value = "Syncing"
Worksheets("BacklogList - M").Range("D4").Value = "Syncing"
Worksheets("BacklogList - C").Range("D4").Value = "Syncing"
Worksheets("BacklogList - R").Range("D4").Value = "Syncing"
Worksheets("BacklogList - O").Range("D4").Value = "Syncing"
ActiveWorkbook.RefreshAll
Worksheets("BacklogList - F").Range("D4").Value = FileDateTime("Q:\A.csv")
Worksheets("BacklogList - M").Range("D4").Value = FileDateTime("Q:\B.csv")
Worksheets("BacklogList - C").Range("D4").Value = FileDateTime("Q:\C.csv")
Worksheets("BacklogList - R").Range("D4").Value = FileDateTime("Q:\D.csv")
Worksheets("BacklogList - O").Range("D4").Value = FileDateTime("Q:\E.csv")
Loop Until x > 5
Call Track_History
End Sub

Private Sub Track_History()
Line = 2
Do Until Sheets("Track_History").Cells(Line, 1) = ""
If Sheets("Track_History").Cells(Line, 1) = Date Then Exit Sub
Line = Line + 1
Loop
Sheets("Track_History").Cells(Line, 1) = Date
Sheets("Track_History").Cells(Line, 2) = Sheets("Overview").Range("H13").Value
'Zusätzliche schleife
Dim i As Long
For i = 1 To 3
Debug.Print i
'F
Sheets("Track_History").Cells(Line, 3) = Sheets("Overview").Range("I11").Value
#usw.
Sheets("Track_History").Cells(Line, 9) = Sheets("Overview").Range("Y11").Value
'M
Sheets("Track_History").Cells(Line, 10) = Sheets("Overview").Range("I17").Value
#usw.
Sheets("Track_History").Cells(Line, 16) = Sheets("Overview").Range("Y17").Value
'C
Sheets("Track_History").Cells(Line, 17) = Sheets("Overview").Range("I23").Value
#usw.
Sheets("Track_History").Cells(Line, 23) = Sheets("Overview").Range("Y23").Value
'R
Sheets("Track_History").Cells(Line, 24) = Sheets("Overview").Range("I29").Value
#usw.
'O
Sheets("Track_History").Cells(Line, 31) = Sheets("Overview").Range("I35").Value
#usw.
Next
End Sub

Meine jetzige Überlegung war nach heute = Datum zu suchen in Track_History, die Zeile zu löschen und den Ablauf nochmal zu starten.
Habe dazu folgendes gefunden:
Sub Heutige_Datum_finden()
'Findet die Zelle mit dem heutigen Datum ()
Dim rg As Range
Sheets("Track_History").Select
Set rg = ActiveSheet.Columns("A:A").Find(Date, , xlFormulas)
If Not rg Is Nothing Then
rg.Activate
Else
MsgBox "Datum " & Date & " leider nicht gefunden"
End If
Set rg = Nothing
End Sub
Würde das Sinn machen?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA aktualisierung, Fehler danach
30.10.2019 14:19:41
Klexy
Du hast auch die Spaltenköpfe und die Datumsspalten anonymisiert. Gerade letzteres ist ungeschickt, wenn dein Problem sich doch auf die Datumswerte bezieht.
Anzeige
AW: VBA aktualisierung, Fehler danach
30.10.2019 17:10:30
Arek
Hi, Frage, meinst du mit Spaltenköpfe z.B. im „Diagramm Daten“ Spalten A1; B1 usw?
So wie ich das Makro verstehe, sucht es in der Spalte A eine leere Zeile, erstellt mit dem Befehl Date das Datum (aktuell vom Rechner, wenn das Datum aber schon vorhanden ist, dann überspringt es das übernehmen aus den anderen Zellen). Ab Spalte B werden die Daten dann aus „Overview“ übernommen.
In A1 steht Date und in A2 Datum im Format 11.07.2018 und in B1 Update und in B2 eine Uhrzeit welche aus dem csv. geholt wird und erst in „Overview“ Zelle H13 steht.
Zellle C2 und weiter sind Daten aus den Tabellen F,M,C,R,O und aus den Spalten A-D. Diese werden aus den Zellen G-T erzeugt.
Anzeige
AW: VBA aktualisierung, Fehler danach
31.10.2019 09:52:32
Klexy
Spaltenköpfe sind die Köpfe von Spalten. Der Kopf ist oben. Das ist eine Metapher. Also die erste Zeile einer Spalte, in der drin steht, was für Daten in dieser Spalte vorhanden sind. In Blatt F ist Zeile 4 der Spaltenkopf.
Unverständlicherweise hast du in den Blättern Track_History und Diagramm_Daten NUR die Datumswerte anonymisiert und die anderen nicht. Und wie gesagt: anonymisierte Datumswerte sind nicht hilfreich bei einer Frage zur Verarbeitung der Datumswerte. Wenn alle Datumsangaben praktisch identisch sind, ist das in dieser Beziehung Datenmüll.
Du schreibst "Ab Spalte B werden die Daten dann aus „Overview“ übernommen." Spalte B in welchem Blatt?
Du schreibst "aus „Overview“ übernommen". Von wo denn genau? Dadurch, dass alle Feldbezeichner anonymisiert sind (was, wie bei Spaltenköpfen, nicht ratsam ist) ist das alles nicht nachvollziehbar.
Du schreibst, dass in Zelle "Overview" H13 eine Uhrzeit steht. Da steht aber ein Text, der aus "F" D4 kommt.
Du schreibst "Zellle C2 und weiter". In welchem Blatt? Inwelche Richtung "weiter"? Nach unten? nach rechts? nach oben? nach links?
Woher soll ich wissen, wo in den Blättern M,C,R,O die Spalten A_D sind, wenn du die Spaltenbuchstaben ausblendest? Keine Ahnung, wie das deinen Anwendern nützt, aber denen, die dir hier helfen sollen, erschwert es die Arbeit unnötig.
Anzeige
AW: VBA aktualisierung, Fehler danach
01.11.2019 08:26:07
Arek
Ich habe die Tabelle nochmal erstellt. Noch einmal zu meinem Problem:
Die Excel Tabelle wird gestartet. Die Daten werden aus einer F.csv Datei in sheet F übernommen. Im sheet F in Zelle B8 steht "=ANZAHL2(G:G)-1". Der Inhalt der Zelle geht nach Tabelle "Overview" I11. Von da aus kopiert das Makro (Module1) aus "Overview" die Zelle nach Track_History (Spalte C, erste Freie Zelle).
Nach dem Durchlauf gehe ich in Overview und sehe neu ermittelte Werte z.B: in I11 aber in Track_History steht der letzte Wert vor der Änderung.
Sieht man schön in Track_History Zelle 313&314 oder 1-9. Während Spalten F&G schon neuere Werte haben sind in den Spalten C,D,E die gleichen Werte wie noch am Vortag.
Der normale Ablauf ist, die Werte in der letzten Zellen-Reihe mit Inhalt löschen zu entfernen, zurück zu Overview gehen und dort per Schaltfläche noch einmal Ausführen und dann passt es.
Musste einige Inhalte löschen da die Datei dann zu groß war.
https://www.herber.de/bbs/user/132895.xlsm
Anzeige
AW: VBA aktualisierung, Fehler danach
04.11.2019 17:50:26
Klexy
Ich kann nicht erkennen, dass das Makro in Modul 1 etwas von Overview nach Track-History kopiert.
Und warum sollte das Makro den Wert in I11 ändern? Deiner Beschreibung nach soll es ja nur etwas kopieren. Und zwar nicht in die Quelle für Zelle I11. Kann ich nicht nachvollziehen.
AW: VBA aktualisierung, Fehler danach
04.11.2019 18:23:15
Arek
Hi Klexy,
in Tabelle F kopiert/Übernimmt das Makro die Daten aus F.csv datei. Dann steht in Tabelle F Zeile B8 die Formel =ANZAHL2(G:G)-1. In Overview Zelle I11 steht =F!$B$8.
Im Makro steht dann dieser Befehl
Sheets("Track_History").Cells(Line, 3) = Sheets("Overview").Range("I11").Value
Dann siehe letzten Text das die Werte teilweise nicht stimmen in Track_History obwohl der Wert in Overview I11 der gleiche ist wie in Tabelle F Zeile B8.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige