Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SendKeys ("%{Down}")

Forumthread: SendKeys ("%{Down}")

SendKeys ("%{Down}")
23.01.2020 10:14:14
Herbert
Hallo,
mit dem nachfolgenden Code öffne ich Zellen-DropDown-Listen, wenn die Zelle mit dem Cursor aktiviert wird. Das funktioniert auch prima. Allerdings wird dabei jedes Mal der "NumLock" ausgeschaltet. Jetzt habe ich es schon mit den u. a. angegebenen Codezeilen (SendKeys "{NUMLOCK}", True) probiert, aber das funktioniert nicht dauerhaft. Habt ihr evtl. eine Idee, woran das liegt?
Ich verwende übrigens Excel 64Bit auf Windows 10 Pro 64Bit.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Invalidation As Integer
On Error GoTo ende
Invalidation = Target.Validation.Type
On Error GoTo 0
If Cells(Target.Row, Target.Column - 1)  "xxx" Then
If Target.Row = 8 Then
If Invalidation = 3 Then
SendKeys ("%{Down}")
SendKeys "{NUMLOCK}", True
End If
End If
End If
ende:
If Not CBool(GetKeyState(KeyCodeConstants.vbKeyNumlock)) Then
SendKeys "{NUMLOCK}", True
End If
Invalidation = 0
End Sub

Servus
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SendKeys ("%{Down}")
23.01.2020 10:50:33
volti
Hallo Herbert,
ich mache das immer so:
Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
        pbKeyState As Byte) As Long
Sub TestSendKeys()
 SendMyKeys "Abc"
End Sub
Sub SendMyKeys(Was As String)
'Nummernblockeinstellung merken, SendKeys abschicken, Nummernblock ggf. wiederherstellen
'GetKeyboardState Keys(0) Keyboard-Array füllen
 Dim Keys(0 To 255) As Byte, bNumBlock As Byte
 GetKeyboardState Keys(0): bNumBlock = Keys(VK_NUMLOCK)
 SendKeys Was
 GetKeyboardState Keys(0): If bNumBlock <> Keys(VK_NUMLOCK) Then SendKeys "{NUMLOCK}"
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: SendKeys ("%{Down}")
23.01.2020 11:07:23
Herbert
Hallo Karl-Heinz,
vielen Dank für deinen Vorschlag. Aber leider funktioniert er bei mir nicht. Er schaltet zwar den NL ein, aber bei der nächsten DropDown-Zelle schaltet er ihn wieder aus, und wieder ein und wieder aus, usw. Ich habe jetzt genervt aufgegeben und löse es mit UserForms.
Servus
Anzeige
AW: SendKeys ("%{Down}")
23.01.2020 11:25:03
volti
Hallo Herbert,
falls doch noch Bedarf besteht:
Hatte vergessen, die Konstante VK_NUMLOCK mit zukopieren....:-(
Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _
        pbKeyState As Byte) As Long
Private Const VK_NUMLOCK = &H90
Sub TestSendKeys()
 SendMyKeys "Abc"
End Sub
Sub SendMyKeys(Was As String)
'Nummernblockeinstellung merken, SendKeys abschicken, Nummernblock ggf. wiederherstellen
'GetKeyboardState Keys(0) Keyboard-Array füllen
 Dim Keys(0 To 255) As Byte, bNumBlock As Byte
 GetKeyboardState Keys(0): bNumBlock = Keys(VK_NUMLOCK)
 SendKeys Was
 GetKeyboardState Keys(0): If bNumBlock <> Keys(VK_NUMLOCK) Then SendKeys "{NUMLOCK}"
End Sub

viele Grüße
Karl-Heinz

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige