Clever-Excel-Forum

Normale Version: VBA Wait Schleife lässt Datenabfrage nicht zu
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
(03.09.2017, 14:19)Kuwer schrieb: [ -> ]Hallo Detlef,


wieso denn das jetzt?  Huh

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.
(03.09.2017, 14: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
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
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
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
Mann, Du bist der Beste! Es funktioniert endlich!!! Vielen vielen Dank! Auch an die anderen natürlich!

Ganz lieben Gruß,
Freefall
(03.09.2017, 17: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
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)
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 Sad
Seiten: 1 2