Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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
CommandButton in Userform wiederholen
19.09.2022 17:24:03
ARGE
Hallo liebe Excel und VBA-Community,
ich bastel schon seit längerem an einer UserForm, in die ich Daten aus einer SQL-Tabelle lesen und schreiben kann. Funktioniert soweit auch ganz gut.
Da mehrere User mit der gleichen UserForm auf die SQL-Tabelle zugreifen und schreiben, habe ich jetzt einen Refresh-Button eingebaut, mit dem ich mir die Ansicht wieder aktualisieren kann. Klappt auch...
Jetzt möchte ich diesen Refresh-Button automatisch alle 15 Sekunden wieder aufrufen. Zwischen den 15 Sekunden soll es aber möglich sein, dass die UserForm weiter bearbeitet wird, also z.B. Daten eingegeben werden können. Deshalb funktionieren Schleifen oder Wait-Funktionen nicht.
An anderer Stelle hatte ich schon die Uhrzeit immer mit einer Application.OnTime-Funktion immer wieder aktualisiert.
In meinem Makro im Formular hinter dem Refresh-Button funktioniert die Application.OnTime-Funktion jedoch nicht:

Private Sub ButtonRefresh_Click()
Sprungmarke = 1
Call Linienauswahl_Click
Application.OnTime Now() + TimeValue("00:00:15"), "ButtonRefresh_Click"
End Sub
HIer kommt dann immer die Fehlermeldung "Das Makro ‚ButtonRefresh_Click‘ kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert."
Hat jemand eine Idee was ich falsch mache.
Herzlichen Dank im Voraus.
Gruß - Rainer

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

Betreff
Datum
Anwender
Anzeige
AW: CommandButton in Userform wiederholen
19.09.2022 17:35:36
Daniel
Hi
schreibe den Code, der beim Refresh ausgeführt werden soll in ein normales Marko in einem allgemeinen Modul.
dann kann man ihn problemlos von überall mit Call Makroname, Application.Run "Makroname" oder auch mit
Application.OnTime Startzeit, "Makroname" ausführen lassen

Sub Refresh_ausführen
Sprungmarke = 1
Call Linienauswahl_Click
Application.OnTime Now() + TimeValue("00:00:15"), "Refresh_ausführen"
End Sub
dh im Button würdest du dann nur noch Call Refresh_ausführen schreiben, um den Prozess zu starten.
beachte, dass du das auch wieder stoppen musst.
Application.Ontime-Aufrufe bleiben aktiv, wenn die Datei geschlossen wird, aber Excel als Anwendung geöffnet bleibt.
Gruß Daniel
Anzeige
AW: CommandButton in Userform wiederholen
21.09.2022 14:37:10
Rainer
Hallo Daniel,
vielen Dank für die schnelle Hilfe.
Ich habe es so umgesetzt wie Du vorgeschlagen hast. Aber leider funktioniert es noch nicht. In meinem Public Sub "Refresh_ausführen" beim "Call Linienauswahl_Click" bricht es ab mit der Fehlermeldung: Fehler beim Kompilieren: Sub oder Function nicht definiert.
Kann das daran liegen, dass "Linienauswahl_Click" ein Private Sub ist und Private Subs nicht aus Public Subs aufgerufen werden können?
Danke & Gruß
Rainer
AW: CommandButton in Userform wiederholen
21.09.2022 15:39:46
Daniel
Hi
Private Subs könnten nur von Makros aufgerufen werden, die sich im selben Modul befinden.
Will man ein Makro aus einem anderen Modul heraus aufrufen, muss es Public sein.
Man darf die Eventmakros (..._Click), die normalerweise Private sind wenn sie automatisch angelegt werden, zu diesem Zweck in Public umschreiben, das beeinträchtigt ihre Funktion als Eventmakro (Ausführen bei Mausklick) nicht.
Beachte, dass wenn du ein Makro aus einem anderen Modul heraus aufrufen willst, den Modulnamen zusätzlich mit angeben musst, ausnahem: das Makro liegt in einem allgemeinen Modul (Modul1)
Gruß Daniel
Anzeige
AW: CommandButton in Userform wiederholen
29.09.2022 08:47:40
Rainer
Hallo Daniel,
Danke für den Tipp. Es funktioniert nun einwandfrei.
Gruß - Rainer

162 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige