Anzeige
Archiv - Navigation
1824to1828
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
Excel VBA UserForm und Code
16.04.2021 13:32:50
W
Hallo Forum,
ich mache gerade meine ersten Versuche mit einer selbst erstellten Userform. Grundsätzlich bin ich schon etwas erfolgreich gewesen, kam aber jetzt auf die Idee, den Code für das Ein- und Ausblenden der Userform als SUB oder als FUNCTION in der UserForm selbst bereitzustellen.
Ansatz für meine Userform war, dass Shell.POPUP-Nachrichten mit einer Zeitangabe teilweise erst nach der doppelten Zeit enden. Deshalb wollte ich das Problem jetzt mit einer Userform lösen. Dabei wollte ich aber möglichst viel Code in die Userform selbst verlagern, um nicht noch zusätzlich zur Userform auch noch den dazu erforderlichen Code in meine Mappe einfügen muss.
Leider habe bis jetzt nur die Erfahrung gemacht, dass ich den Code in der Userform nicht aus einem "normalen" Modul heraus aufrufen kann.
Beim Aufruf erhalte ich den Hinweis "Fehler beim Kompilieren" und "Sub oder Function nicht definiert"
Gibt es für dieses Problem eine einfache Lösung?
Gruß
Werner

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA UserForm und Code
16.04.2021 13:41:03
Daniel
Hi
das geht schon.
du musst zwei Dinge beachten.
1. der Userformname muss beim Aufruf dem Makronamen vorangestellt werden: Call Userform.Makro
2. bei einem Makro, dass aus einem anderen Modul heraus aufgerufen werden soll, darf die Kopfzeile nicht mit "Private Sub/Function" beginnen sondern muss mit "Public Sub/Function" oder nur mit "Sub/Function" beginnen.
das funktioniert prinzipiell auch mit den Eventmakros (Commandbutton_Click), welche ja automatisch das "Private" bekommen. Das kann man in "Public" ändern, die Funktionalität als automatisches Eventmakro bleibt erhalten.
Sollte das aufgerufene Eventmakros Übergabeparameter haben, so muss man die natürlich angeben.
Gruß Daniel
Anzeige
AW: Excel VBA UserForm und Code
16.04.2021 16:00:04
W
Hallo Daniel.
Vielen Dank für Deine Antwort. Inzwischen bin ich einen Schritt weiter. Der Aufruf der "Start"-Funktion hat bereits geklappt. Probleme habe ich aber mit folgendem Befehl:
Application.OnTime MsgEndTime, "UF_Popup.PopUpMsgEnd"
Diese Routine wird nach Ablauf der Zeit nicht gefunden.
Mein "Erstlingswerk" habe ich hochgeladen. https://www.herber.de/bbs/user/145594.xlsm
Wie kann ich das Problem lösen, ohne diese Routine in eines meiner "normalen" Module übernehmen zu müssen?
Darf ich noch zwei weitere Fragen anhängen:
1. ist es möglich, der Routine in der Userform einen Alias-Namen zuzuweisen, um dann diese Routine mit einem kürzeren Namen aufrufen zu können?
2. Habe ich eine Möglichkeit, den Bereich meiner Userform dynamisch anzupassen, damit nicht nach der Nachricht noch jede Menge freier Platz vorhanden ist?
Gruß
Werner
Anzeige
AW: Excel VBA UserForm und Code
16.04.2021 16:28:09
Nepumuk
Hallo Werner,
Makros die per OnTime-Methode aufgerufen werden müssen sich in einem Standardmodul befinden.
Teste mal das:

Option Explicit
Private Declare PtrSafe Function MessageBoxTimeoutA Lib "user32.dll" ( _
ByVal hWnd As LongPtr, _
ByVal lpText As String, _
ByVal lpCation As String, _
ByVal uType As Long, _
ByVal wLanguageId As Integer, _
ByVal dwMiliseconds As Long) As Long
Private Const MB_TIMEOUT As Long = &H7D00
Public Sub test()
Dim lngReturn As Long
lngReturn = MessageBoxTimeoutA(Application.hWnd, "Hallo", _
"TimeoutTest", vbYesNo Or vbInformation, 0, 5000)   '5000 = 5 Sekunden
Select Case lngReturn
Case MB_TIMEOUT
Debug.Print "TimeOut"
Case vbOK, vbYes
Debug.Print "Ok, Ja"
Case vbAbort, vbCancel
Debug.Print "Abrechen"
Case vbNo
Debug.Print "Nein"
Case vbRetry
Debug.Print "Wiederholen"
Case Else
Debug.Print lngReturn
End Select
End Sub
Gruß
Nepumuk
Anzeige
AW: Excel VBA UserForm und Code
16.04.2021 17:10:38
W
Hallo Nepumuk,
vielen Dank für Dein Code-Beispiel. Damit kann ich mein Userform-Erstlingswerk wieder einstampfen.
Natürlich habe ich den Code umgehend getestet und bin begeistert. Ich werde Zug um Zug nun alle meine Shell-PopUp-Befehle auf den neuen Code umstellen.
Nochmals: vielen Dank.
Mein Problem ist damit erledigt.
Gruß Werner

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige