Live-Forum - Die aktuellen Beiträge
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
Inhaltsverzeichnis

API-Funktion wie aufrufen?

API-Funktion wie aufrufen?
12.04.2021 12:43:28
Brigitta
Hallo,
ich würde gerne in der Textbox einer Userform den blinkenden Cursor ein-
und ausblenden. Im Netz hab ich gefunden, dass dies über API-Funktionen
zu machen ist.
https://www.vbarchiv.net/tipps/tipp_508-textbox-locked-cursor-weg.html
Dieser Code findet sich an vielen Fundstellen im Netz, nur funktioniert er
nicht einfach so.
CODE:
' Cursor ausblenden
Private Declare Function HideCaret Lib "user32" ( _
ByVal hwnd As Long) As Long
' Cursor einblenden
Private Declare Function ShowCaret Lib "user32" ( _
ByVal hwnd As Long) As Long
' Aufruf im Enter-Ereignis

Private Sub Text1_Enter()
If Text1.Locked Then
HideCaret Text1.hWnd
Else
ShowCaret Text1.hWnd
End If
End Sub

Wenn ich den Code kopiere und so eingebe, kann er nicht funktionieren, weil
die Textbox Text1 keine Eigenschaft "hwnd" verfügt. Es kommt ein
Laufzeitfehler.
Wenn ich das richtig verstehe, ist "hwnd" die Handle-Nr, mit der ich die API-
Funktion aufrufen muss.
Was ich nicht hinkriege:
(1) Wie komm ich an diese "hwnd" und
(2) wie sieht aus VBA heraus der richtige Aufruf der Funktion 'ShowCaret' aus?
Wäre für Hilfe sehr dankbar.
Freundliche Grüße
Brigitta

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: API-Funktion wie aufrufen?
12.04.2021 13:11:59
Mullit
Hallo,
das ist VB6 Code (Visual Basic) nicht VBA, die Controls der UserForms sind keine echten Fenster und besizen keine Handles....
Gruß, Mullit
AW: API-Funktion wie aufrufen?
12.04.2021 13:31:02
Mullit
..genauer, dies trifft auf die Controls der FM20.DLL-Bibliothek zu und dazu zählt das TextBox-Control...:-(
Gruß, Mullit
AW: API-Funktion wie aufrufen?
12.04.2021 13:44:56
Brigitta
Vielen Dank für Deine Antwort.
Wie könnte man das folgende Problem, das meiner Frage zu Grunde liegt, anders lösen:
Wenn man bei einer Textbox eine Validierung macht und im Falle einer falschen Eingabe
den User mittels einer Messagebox darüber informiert, ist nach dem Schließen der
Messagebox der Cursor unsichtbar. Das Problem gibt es seit langem, eine unelegante
Lösung ist, den Focus auf die Textbox zu setzen und dann mittels SendKeys den Cursor
vor und zurück zu bewegen.
Gibt es vielleicht doch eine Lösung über (andere) API-Funktionen?
Grüße Brigitta
Anzeige
AW: API-Funktion wie aufrufen?
12.04.2021 15:14:06
MRUTOR
Hallo Brigitta,
die Frage ist, welches Textbox Ereignis du benutzt, um die Eingabe zu pruefen. Wenn du "AfterUpdate" benutzt, passiert das, was du beschrieben hast.
Wenn du aber stattdessen das "Exit" Ereignis benutzt kannst du mit .SetFocus wieder in die Textbox zurueck und das "Cancel = True" benutzen, damit der Cursor auch da wieder blinkt.
Sollte es dir noch unklar sein, dann poste mal bitte deinen Code und man kann den umbauen oder ergaenzen.
Gruss Tor
AW: API-Funktion wie aufrufen?
12.04.2021 15:21:39
Brigitta
Vielen Dank für die Antwort.
Ich hatte bislang mit dem BeforeUpdate-Ereignis gearbeitet, weil das über die Cancel-Möglichkeit verfügt,
und mir damit alle möglichen Probleme eingehandelt.
Mit dem Exit-Ereignis funktioniert alles prima. Ich bin Dir sehr dankbar!
Aber wozu braucht man dann noch das BeforeUpdate-Ereignis :-))
Anzeige
gerne...
12.04.2021 15:29:10
MRUTOR
Hallo Brigitta,
ehrlich gesagt, habe ich das BeforeUpdate noch nie benutzt. Fuer eine Pruefung der Eingabe eignet sich meiner Meinung nach das Exit Ereignis am besten, aber auch das AfterUpdate. Allerdings mit dem besprochenen Problem des Focus.
Gruss Tor

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige