Anzeige
Archiv - Navigation
1924to1928
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

Status der Num-Lock-Taste

Status der Num-Lock-Taste
08.04.2023 21:20:40
Josef Schindler

Hallo und guten Abend an das Excelforum,

kann ich, während Excel "läuft" den Status der Num-Lock-Taste via Code abfragen und ggf. ändern, wenn diese inaktiv ist?
Wer kann mir bitte helfen? Ich bin leider VBA - Memme.
Und wer gibt mir Hilfestellung und kann mir einen VBA - Code aufzeigen und vor allem erklären?

Ich bin für jede erdenkliche Hilfestellung sehr dankbar!

Mit freundlichem Gruß

Josef

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Status der Num-Lock-Taste
08.04.2023 22:42:39
volti
Hallo Josef,

hier ein wenig Spielmaterial....
Ich denke, der Code ist selbsterklärend. Wichtig ist die Declarefunktion, da mit einer API-Funktion gearbeitet wird.

Code:


Private Declare PtrSafe Function GetKeyboardState Lib "user32" ( _ pbKeyState As Byte) As Long Sub NumBlockEinschalten() Dim Keys(0 To 255) As Byte GetKeyboardState Keys(0) If Keys(vbKeyNumlock) = False Then SendKeys "{NUMLOCK}" End Sub Sub NumBlockAusschalten() Dim Keys(0 To 255) As Byte GetKeyboardState Keys(0) If Keys(vbKeyNumlock) Then SendKeys "{NUMLOCK}" End Sub Function GetNumBlockStatus() As Boolean Dim Keys(0 To 255) As Byte GetKeyboardState Keys(0) GetNumBlockStatus = Keys(vbKeyNumlock) End Function Sub Test() MsgBox "Der Nummernblock ist " & IIf(GetNumBlockStatus, "ein", "aus") & "geschaltet!" End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz



Anzeige
AW: Status der Num-Lock-Taste
09.04.2023 02:22:27
Josef Schindler
Hallo Karl-Heinz,

vielen Dank - genau sowas brauche ich.
Mit dieser Hilfe kann ich arbeiten. Ich traue mir zu, hier weiter zu basteln.
Einfach toll von dir.

In diesem Sinne auch an dich schöne Feiertage

Gruß, Josef aus Köfering bei Regensburg


AW: Status der Num-Lock-Taste
09.04.2023 11:26:55
Herbert_Grom
Hallo Joseph,

na das ist ja mal ein Ding: Köfering bei Regensburg! Ich hab mal 2,5 Jahre in Oberisling gewohnt. Ist allerdings schon ein paar Jährchen her. Genauer gesagt, von 1976 - 78. Mittlerweile wohne ich seit fast 44 Jahren in Pforzheim. War eine schöne Zeit in Oberisling.

Servus


Anzeige
AW: Status der Num-Lock-Taste
09.04.2023 12:57:14
Josef Schindler
Hi,

ja ich lebe quasi zwangsweise hier - nach einem Schlaganfall im Pflegeheim...


AW: Status der Num-Lock-Taste
09.04.2023 13:42:44
Herbert_Grom
Hallo Josef,

oh je, das tut mir wirklich leid. Ich hoffe du bist dort gut Versorgt. Und wenigstens ist das Gebäude noch relativ neu und damit erträglich. Ich wünsche dir gute Besserung!!!

Servus


AW: Status der Num-Lock-Taste
09.04.2023 16:42:08
snb
M_snb_NUMlock_aan_uit ist ein 'ToggleMacro'

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Sub M_snb_NUMlock_aan_UIT()
   keybd_event &H90, &H45, &H1 Or 0, 0
   keybd_event &H90, &H45, &H1 Or &H2, 0
   MsgBox GetKeyState(144)
End Sub


Anzeige
AW: Status der Num-Lock-Taste
09.04.2023 22:10:26
Josef Schindler
Hallo,

leider bin ich eine VBA - Memme. Was ist M_snb_NUMlock_aan_uit ist ein 'ToggleMacro' ?
Ich kann damit jetzt leider nichts anfangen...
Dennoch bedanke ich mich für deine Antwort.

Mit freundlichen Gruß

Josef


AW: Status der Num-Lock-Taste
10.04.2023 08:42:41
volti
Hallo Josef,

zur Erklärung:
Das von snb gezeigte "Togglemacro" toggelt die Numlocktaste, d.h. es wird bei jedem Drücken der Taste der Zustand umgeschaltet, also an-aus-an-aus....

Verwendet wird in dieser Sub die API-Funktion keybd_event, die das Drücken und das Loslassen einer Taste erlaubt und damit genau das simuliert, was ein User machen würde.

Ich bin auch ein Freund von kurzem code und verwende auch nicht immer nur einmal benutzte Konstanten und Variablen, sondern setze den Wert ein.
Ich gebe aber immer einen Hinweis auf die zugrunde liegende Konstante, damit man später noch weiß, was man gemacht hat.

Das ist hier leider nicht gemacht worden.

Das Makro hätte also auch so aussehen können. Natürlich muss man nun die Konstanten auch definieren, also mehr code)

Sub M_snb_NUMlock_aan()
  Const VK_NUMLOCK = &H90
  Const KEYEVENTF_KEYUP = &H2

  If GetKeyState(VK_NUMLOCK) = 0 Then
     keybd_event VK_NUMLOCK, 0, 0, 0
     keybd_event VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0
  End If
  MsgBox GetKeyState(VK_NUMLOCK)
End Sub
Wozu snb die Werte &H1 und &H45 braucht, weiß ich leider auch nicht. Vielleicht liefert snb ja eine kurze Erklärung dazu.

Die Toggleversion berücksichtigt aber nicht den jetzigen Zustand, sondern schaltet einfach nur um, so dass man, wenn man nur einschalten möchte, vorher den Zustand checken muss.

keybd_event bringt m.E. nicht unbedingt immer einen Vorteil ggü. der Sendkeys-Version, denn auch diese Funktion sendet die Tastenanschläge nur an das Vordergrundfenster.

Gruß KH


Anzeige
AW: Status der Num-Lock-Taste
10.04.2023 08:49:27
volti
Als Nachtrag vielleicht noch etwas Licht ins Dunkle:

Die hexedezimale Darstellung der dezimalen Zahl 144 ist &H90

Einen schönen zweiten Ostertag wünsche ich
Karl-Heinz


Status der Num-Lock-Taste
10.04.2023 09:37:55
Josef Schindler
Hallo,

danke für de "Schupser" - ich habe es kapiert.

ebenfalls schönen zweiten Feiertag

29 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige