Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
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
Inhaltsverzeichnis

Zeitverzögertes Aufrufen einer Funktion

Zeitverzögertes Aufrufen einer Funktion
14.03.2023 15:59:56
Dirk
Hallo ins Forum,
ich habe mir folgende Beispieldatei hier heruntergeladen : 131301v.xls (Kopfleiste in einem Userform ein- und ausblenden) !
Meine Frage hierzu : Gibt es die Möglichkeit, daß die Kopfleiste nach dem Einblenden nach 5 Sekunden wieder automatisch
ausgeblendet wird ?
Vielen Dank schon mal vorab, weiter unten der Code, wo ich schon mal probiert habe (FETT = Mein Versuch) !
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" ( _
ByVal hWnd As Long) As Long
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOn_Click()
Call fncHasUserformCaption(True)
Application.OnTime Now + TimeValue("00:00:05"), "Verschieben"
Call fncHasUserformCaption(False)
End Sub
Private Sub cmdOff_Click()
Call fncHasUserformCaption(False)
End Sub
Private Sub UserForm_Initialize()
Call fncHasUserformCaption(False)
End Sub
Private Function fncHasUserformCaption(bState As Boolean)
Dim Userform_hWnd As Long
Dim Userform_Style As Long
Dim Userform_Rect As RECT
Const GWL_STYLE = (-16)
Const WS_CAPTION = &HC00000
Userform_hWnd = FindWindow( _
lpClassName:=IIf(Val(Application.Version) > 8, _
"ThunderDFrame", "ThunderXFrame"), _
lpWindowName:=Me.Caption)
Userform_Style = GetWindowLong(hWnd:=Userform_hWnd, _
nIndex:=GWL_STYLE)
If bState = True Then
Userform_Style = Userform_Style Or WS_CAPTION
Else
Userform_Style = Userform_Style And Not WS_CAPTION
End If
Call SetWindowLong(hWnd:=Userform_hWnd, nIndex:=GWL_STYLE, _
dwNewLong:=Userform_Style)
Call DrawMenuBar(hWnd:=Userform_hWnd)
End Function
Private Sub Verschieben()
Call fncHasUserformCaption(False)
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitverzögertes Aufrufen einer Funktion
14.03.2023 16:07:06
Daniel
Hi
im Prinzip schon fast richtig.
"Verschieben" muss Public sein und in einem allgemeinen Modul liegen. (bspw "Modul1")
Gruß Daniel
AW: Zeitverzögertes Aufrufen einer Funktion
14.03.2023 16:22:35
Dirk
So, hab ich probiert, kommt folgende Fehlermeldung :
"Fehler beim Kompilieren : Sub oder Function nicht definiert"
AW: Zeitverzögertes Aufrufen einer Funktion
14.03.2023 16:36:17
Daniel
Hi
1. Subs, die von anderen Modulen aus aufgerufen werden, müssen grundsätzlich als "Public" deklariert werden.
"Private Subs" können nur aus dem eigenen Modul heraus aufgerufen werden
2. wenn man eine Sub in einem anderen Modul aufruft und dieses Modul ist kein allgemeines Modul (sondern ein Tabellenblatt- oder Userform-Modul), dann muss man den Modulnamen voaranstellen: Call ModulName.ProzedurName
das liegt daran, dass über alle allgemeinen Module ein Prozedurname nur einmal verwendet werden darf.
hast du jedoch mehrere Tabellen- oder Userformmodule, dann kann der selbe Prozedurname in jedem Modul vorkommen. Um dann eindeutigkeit zu bekommen, muss man den Modulnamen mit dazu nehmen:
Gruß Daniel
Anzeige
AW: Zeitverzögertes Aufrufen einer Funktion
14.03.2023 17:52:10
Dirk
Habe jetzt alles nach Anweisung gemacht, bekoome aber jetzt die Fehlermeldung : "Methode oder Datenobjekt nicht gefunden"
AW: Zeitverzögertes Aufrufen einer Funktion
14.03.2023 19:15:20
Daniel
dann hast du irgendwas falsch gemacht.
da ich nicht weiß, was du gemacht hast, kann ich dir auch nicht sagen, was das ist.
in solchen Fällen ist am besten, die Datei hochzuladen.
AW: Zeitverzögertes Aufrufen einer Funktion
15.03.2023 11:27:26
Daniel
Hi
naja, du musst den Modulnamen des Moduls voranstellen, in dem ich das Makro befindet, das du aufrufen willst.
du hast das Modul verwendet, in dem sich das gerade ausgeführte Makro befindet aber nicht das, das aufgerufen werden soll.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige