Registriert seit: 03.09.2017
Version(en): 2016
Vielen Dank für Eure Mühe!
Allerdings hat das Abschalten von "Aktualisierung im Hintergrund zulassen" nichts gebracht...
Und der Code von Kuwer macht irgendwie gar nichts... Ich kann das Makro zwar ausführen, aber es passiert nichts.. Nicht mal eine Fehlermeldung erscheint?!
Gibt es vielleicht noch einen anderen Weg, eine Zelle einmal pro Minute auszulesen und irgendwohin zu schreiben? Meinetwegen auch in eine txt Datei. Hauptsache, ich kann die Daten aufzeichnen^^
Gruß,
Freefall
Registriert seit: 12.04.2014
Version(en): Office 365
(03.09.2017, 15:19)Kuwer schrieb: Hallo Detlef,
wieso denn das jetzt?
Gruß Uwe
Ich hatte mal folgenden Fall:
In einem Makro wurde die Aktualisierung angestoßen. Danach sollten weitere Schritte erfolgen, die aber auf den aktualisierten Daten beruhen.
Mit eingeschalteter Option geht das leider in die Hose weil die Aktualisierung noch läuft während das Makro schon beim nächsten Schritt ist oder sogar schon durchgelaufen ist.
Nach Abschalten der Option lief alles wie gewünscht.
Wir sehen uns!
... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
03.09.2017, 16:38
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2017, 17:02 von Kuwer.)
(03.09.2017, 15:41)shift-del schrieb: Ich hatte mal folgenden Fall:
In einem Makro wurde die Aktualisierung angestoßen. Danach sollten weitere Schritte erfolgen, die aber auf den aktualisierten Daten beruhen.
Mit eingeschalteter Option geht das leider in die Hose weil die Aktualisierung noch läuft während das Makro schon beim nächsten Schritt ist oder sogar schon durchgelaufen ist.
Nach Abschalten der Option lief alles wie gewünscht.
OK.
(gelöscht)
Gruß Uwe
Registriert seit: 10.08.2017
Version(en): Professionel 2013
Hallo Freefall
Versuch doch mal dies. Bitte Variable als Public deklarieren.
Bei mir funktioniert es.
Gruss
Code:
Option Explicit
Public iTimerSet As Double
Public a
Public Sub StartIntervall()
iTimerSet = Now + TimeValue("00:00:15")
Application.OnTime iTimerSet, "Intervall"
End Sub
Public Sub StopIntervall()
Application.OnTime iTimerSet, "Intervall", , Schedule:=False
End Sub
Private Sub Intervall()
If a <> "" Then
While a = Worksheets("Tabelle1").Range("I10").Value
DoEvents
Wend
End If
ActiveWorkbook.RefreshAll
Sheets("Tabelle6").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sheets("Tabelle1").Range("I10").Value
a = Worksheets("Tabelle1").Range("I10").Value
StartIntervall
End Sub
Registriert seit: 03.09.2017
Version(en): 2016
So, habe jetzt mal Helvetiers Lösungsvorschlag probiert. 15 Sekunden lang passiert nichts und dann erscheint die Fehlermeldung:
Das Makro kann nicht ausgeführt werden. Das Makro möglicherweise nicht verfügbar in dieser Arbeitsmappe oder alle Makros wurden deaktiviert.
Dass das Makro nicht verfügbar ist, ist ja Schwachsinn. Alle anderen Makros, die ich benutze, funktionieren ja auch. Und deaktiviert ist es definitiv auch nicht. Google brachte mir für diese Fehlermeldung auch keine brauchbaren Lösungen.
Dann scheint der Fehler wohl eindeutig bei mir zu liegen, wenns bei euch funktioniert...
Gruß,
Freefall
Registriert seit: 10.08.2017
Version(en): Professionel 2013
03.09.2017, 17:42
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2017, 17:42 von Helvetier.)
Hallo freefall
Diese Fehlermeldung kenne ich. Ich habe zwei Sachen gemacht und weiss deshalb nicht was der Grund ist:
- die Arbeitsmappe als xlsm gespeichert
- den Verweis Microsoft Visual Basic for Application Extensibility 5.3 aktiviert
Gruss
Nachtrag: noch etwas: Den Code habe ich in einem Modul
Registriert seit: 03.09.2017
Version(en): 2016
Mann, Du bist der Beste! Es funktioniert endlich!!! Vielen vielen Dank! Auch an die anderen natürlich!
Ganz lieben Gruß,
Freefall
Registriert seit: 10.08.2017
Version(en): Professionel 2013
(03.09.2017, 18:14)freefall101 schrieb: Mann, Du bist der Beste!
....mit helvetischer Bescheidenheit: das weiss ich! :19:
Und mich freut, dass Du die nächste Woche ohne Sorgen starten kannst.
Gruss
Registriert seit: 29.09.2015
Version(en): 2030,5
Leider treff ich hier nicht die beste Lösung:
Ein Querytable mit 'refresh interval" von 1 Minute (= Eigenschaft).
Aktivierung der Querytable event : AfterRefresh. (= Klasse Module mit WithEvents Variable)
Registriert seit: 16.08.2017
Version(en): Alle
04.09.2017, 17:52
Hi Alle,
nur meine 2 Penny:
Abfragen im Web erfolgen in der Regel asynchron.
D.h. in Normalfall wartet der Code, bis die Ausführung einer anderen Routine o.Ä. beendet ist, bevor er weiterläuft.
Bei asynchronen Prozessen verhält sich das anders.
Ein schönes Beispiel ist hierfür auch das Webbrowser Steuerelement.
Man muss i.d.R. in irgendeiner Weise abfragen ob das Ding noch busy ist.
Helvetier hat das versucht nachzubilden wenn ich es richtig sehe, mit einem Datenabgleich (ob das wirklich gesund ist?)
Man muss das alles sehr genau prüfen ob das so hinhaut, vor allem wenn es nonmodal sein sollte.
Aber wie gesagt - nur so nebenbei