Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Toggle Button - autom. Webafrage an/ausschalten

Toggle Button - autom. Webafrage an/ausschalten
09.11.2006 13:13:56
CHR.
Hallo zusammen,
in meiner 'Not' poste ich an diesem ausgewiesenermassen EXPERTEN Forum mein Problem.
Ich erfrage in einem Rhythmus von 15 min. Aktienkurse mittels Webquery im Web.
Hierzu habe ich einen entsprechenden VBA Code - funzt auch prima.
Die ganze Aktion lässt sich mittels zweier (Formular)Button auch grundsätzlich
an- bzw. ausschalten. Soweit sogut.
Versuche ich dies mittels eines (Steuerungs)ToggleButton zu realisieren,
gelingt es mir nur die Prozedur anzuschalten, leider aber nicht auszuschalten.
Habe auch keine Idee mehr ... Vielleicht weiss ja einer der Profis etwas.
Hier der dazu gehörige Code:
Code Toggle Button

Private Sub UserForm_Initialize()
ToggleButton1.Value = False
ToggleButton1.Caption = "Autom. Aktualisierung Off"
End Sub


Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Autom. Aktualisierung On"
Call AktienkursAktuell
Else
ToggleButton1.Caption = "Autom. Aktualisierung Off"
Call StopRefresher
Application.StatusBar = False
Range("A22").Select
End If
End Sub

Code AktienkursAktuell
Sub AktienkursAktuell()
'
' AktienkursAktuell Makro
Dim blnStop As Boolean
blnStop = False
If Not blnStop Then
Application.StatusBar = "Abfrage aktiv - letzte Aktualisierung " + Format(Now, "DD.MM.YYYY HH:MM:SS") + " - (Aktualisierung alle 15 Min.)"
Application.OnTime Now + TimeValue("00:02:00"), "AktienkursAktuell"
Range("K3").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Range("P3").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Application.Run "CDE_StockList.xls!LiveValue"
Else
Application.StatusBar = False
End If
End Sub
Code StopRefresher
blnStop = True
Range("I27").Select
Application.StatusBar = False
Range("A2").Select
End Sub
Vielen Dank schon einmal im voraus.
Chris

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Toggle Button - autom. Webafrage an/ausschalten
09.11.2006 16:12:09
ingUR
Hallo, Chris,
es scheint die Struktur der Programmgliederung bei dem Kopieren verloren gegangen zu sein, so dass ich nicht sicher bin, ob Du alle relevanten Zeilen veröffentlicht hast (Deklarationen).
Doch zum Problem vermute ich, dass Du keine Meldung an die ON-Time-Funktion sendest, dass der letzte Eintrag zum Start der Prozedur "Achtenaktuallisierung" gelöscht werden soll.
Mit der Anweisung
Application.OnTime Now+TimeValue("00:02:00"), "AktienkursAktuell"
übergibst Du an doe ON-Timeliste die Anweisung, in 2 Minuten, nämlich zur Uhrzeit jetzt + 2 Minuten, die Prozedur AktienkursAktuell" zu starten.
Die ON-Timer-Function "notiert" diese Anforderung in ihre "Überwachungsliste" mit vorgesehener Ausführungszeit und Ausführungstätigkeit (Name der Prozedur, die ausgeführt werden soll.
Sobald der Zeitpunkt gekomme ist, wird das anstehende Ereignis aufgerufen, die Einträge aus der "Liste" gelöscht und die Ausführung erfolgt. Es steht aomit in der Regel kein weiterer Aufruf für diese Prozedur in der Liste.
Durch den rekrusiven Aufruf der Funktion "Aktienkursaktuallisierung" wird jedoch eals erstes ein neur Beobachtungzeitpunkt an die ON-Time-Liste gesendet. Diesen gilt es zu löschen.
Wie Du Deine Variable blnStopp einsetzen möchtest, habe ich nicht nachvollzogen; die lokale Deklaration in der Prozedur "Aktienkurs.." stellt jedoch sicher, das es sich hier nicht um den Wert der Variablen mit gleichm Namen in der Prozedur "StopRefresh" handelt. Zudem setzt Du sie definitionsgemäß immer auf FALSE, was das Sezen der nächten Aktion auslöst.
Hier ein Versuch der Umgestaltung (bezieht sich nur auf Standardmodulprozeduren; Auskommentiert die Zeilen, die nur in Deinem Projekt Sinn machen, vielleicht kannst Du Aneweisungen in Dein System integrieren:
Option Explicit
Dim blnstop As Boolean
Public NextStart As Variant
'Code AktienkursAktuell
Sub AktienkursAktuell()
' AktienkursAktuell Makro
blnstop = False
If Not blnstop Then
Application.StatusBar = "Abfrage aktiv - letzte Aktualisierung " + Format(Now, "DD.MM.YYYY HH:MM:SS") + " - (Aktualisierung alle 15 Min.)"
NextStart = Now + TimeValue("00:02:00")
Application.OnTime NextStart, "AktienkursAktuell"
'        Range("K3").QueryTable.Refresh BackgroundQuery:=False
'        Range("P3").QueryTable.Refresh BackgroundQuery:=False
Application.Run "SymbolsNasdaq.xls!LoadComposite"
Else
Application.StatusBar = False
End If
End Sub
'Code StopRefresher
Sub StopRefresher()
Application.OnTime NextStart, "AktienkursAktuell", False
blnstop = True
Range("I27").Select
Application.StatusBar = False
Range("A2").Select
End Sub

Viel Erfolg,
Uwwe

Anzeige
AW: Toggle Button - autom. Webafrage an/ausschalte
10.11.2006 08:03:28
Christoph
Hallo UWE;
vielen herzlichen Dank !
Das Setzen der Variable (NextStart) war DIE Lösung.
Wenn es im Nachgang betrachtet ganz einfach, wenn man es halt kann.
Also nochmals vielen Dank (Ich schliesse Dich in meine Gebete mit ein ;-))
Gruss
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige