Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
868to872
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
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ListBox ohne/mit STRG-Taste anklicken

ListBox ohne/mit STRG-Taste anklicken
09.05.2007 15:06:00
Wilhelm
Hallo,
ich bitte um Hilfe bei folgender Aufgabenstellung:
Durch Anklicken einer bestimmten Zelle öffne ich eine Listbox (über das SelectionChange-Ereignis wird die Listbox auf Visible = True gesetzt). Ich möchte jetzt unterscheiden, ob beim Anklicken der ListBox die STRG-Taste gedrückt war oder nicht, um 2 unterschiedliche Aktionen ausführen zu können. Hierzu habe ich mir folgendes überlegt:
Ich definiere die Public-Variable „Strg“ und setze diese mit Hilfe der Ereignisprozedur „ListBox1_KeyDown“ auf „True“ und mit Hilfe der Ereignis-Prozedur „ListBox1_KeyUp“ zurück auf „False“. Bei gedückter STRG-Taste muss die Variable dann „True“ sein. Beim Anklicken der ListBox wird dann abgefragt, ob die Variable „Strg“ True oder False ist und die Prozedur entsprechend verzweigt.
Mein Problem:
Wenn ich nach dem Öffnen der ListBox die STRG-Taste drücke, wird die Ereignisprozedur „ListBox1_KeyDown“ nicht ausgeführt und also die Variable „Strg“ nicht auf „True“ gesetzt. Ich muß die Listbox erst einmal anklicken, danach läuft alles nach Wunsch.
Ich vermute, dass dies mit dem Focus zusammenhängt. Das Ereignis „ListBox1_KeyDown“ kann ja nur eintreten, wenn die ListBox1 den Focus hat. Offenbar hat die Listbox unmittelbar nach dem Öffnen den Focus nicht und erhält ihn erst mit dem ersten Anklicken.
Ich suche jetzt nach einer Möglichkeit, der Listbox durch den Code beim Öffnen auch gleichzeitig den Focus zu übergeben, bisher aber erfolglos. „ListBox1.SetFocus“ funktioniert nicht, wird nicht unterstützt. Ich kann mittels Code einen ListBox1.ListIndex bestimmen, was zur Folge hat, dass die Ereignisprozedur „ListBox1_Click“ ausgeführt wird, aber der Focus wird offenbar trotzdem nicht übergeben, denn auch danach funktioniert „Listbox1_KeyDown“ nicht.
Wer kann mir helfen, der Listbox den Focus mittels Code zu übergeben?
Oder hat jemand eine bessere Idee, wie ich beim Anklicken der ListBox unterscheiden kann zwischen gedrückter bzw. nicht gedrückter STRG-Taste?
Herzlichen Dank im Voraus für Eure Hilfe!
Gruß
Wilhelm

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox ohne/mit STRG-Taste anklicken
09.05.2007 15:36:00
Rudi
Hallo,
Listbox1.Activate hilft dir weiter.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: ListBox ohne/mit STRG-Taste anklicken
09.05.2007 19:11:51
Wilhelm
Hallo Rudi,
herzlichen Dank für Deinen heißen Tip! Es funktioniert prima!
Gruß
Wilhelm

AW: ListBox ohne/mit STRG-Taste anklicken
09.05.2007 16:00:00
Armin
Hallo Wilhelm,
man kann auch die Taste Abfragen mit API.
Declare

Function GetAsyncKeyState Lib "user32"  (ByVal vKey As Long) As Integer


Sub Test_Strg_Taste()
GetAsyncKeyState (17)
If Result = -32767 Then
'Aktion
End If
End Sub


Anzeige
AW: ListBox ohne/mit STRG-Taste anklicken
09.05.2007 19:05:00
Wilhelm
Hallo Armin,
danke für Deine schnelle Antwort. Die Funktion GetAsyncKeyState ist für mich völlig neu und auch die Anweisung Declare. Ich habe ein bisschen damit gespielt, aber es funktioniert nicht, daher noch ein paar Verständnisfragen.
Muss ich einen Verweis auf die Bibliothek user32 erstellen? Diese ist auf meinem PC vielfach vorhanden, erscheint aber nicht, wenn ich in VB unter Extras / Verweise die verfügbaren Verweise aufrufe.
Bezieht sich das Argument 17 der Funktion GetAsyncKeyState (17) auf die STRG-Taste? Wo / wie finde ich die Argumente für andere Tasten?
Mein VB verlangt in Deinem Code die Dimensionierung der Variablen „Result“. Ich nehme an
Dim Result as Long
ist in Ordnung.
Die Zeile If Result = -32767 Then verstehe ich nicht. Warum die Zahl -32767?
Herzliche Grüße
Wilhelm

Anzeige
AW: ListBox ohne/mit STRG-Taste anklicken
09.05.2007 20:07:53
Armin
Hallo Wilhelm,
nein normalerweise ist die API-Function nur vom BS abhänig. Leider trennt der Editor hier die
"Declare Function ...." sie müssen in einer Zeile stehen! Damit sagst Du dem Excel nur wo die Function steht.
Es sind viele Tasten prüfbar. Die Function gibt eine -32767 zurück wenn die Taste gedrückt ist.
16, "SHIFT" ;17, "STRG";18, "ALT" usw.
Gruß Armin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige