Login
Registrati
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
-
AutoreArticoli
-
Buongiorno,
in VBA c'è modo di sapere se il NUMLOCK sul tastierino numerico è attivo o no?
grazie!

Excel 2010 lo segna in fondo a sinistra del foglio apertoVa selezionato
Sono sotto MAC OS.
non riesco a personalizzare la barra di stato ...
Ciao,
devi fare ricorso alle API.
Ti giro un codice esempio e anche un allegato.
`Option Explicit Private Declare PtrSafe Function GetKeyState Lib "User32.dll" (ByVal nVirtKey As Long) As Long Const VK_NUMLOCK As Long = &H90 Function IsNumLockOn() As Boolean IsNumLockOn = (GetKeyState(VK_NUMLOCK) And 1) End Function Sub testNum() If IsNumLockOn() Then MsgBox "il NUM BLOCK E' ATTIVO" Else MsgBox "il NUM BLOCK E' SPENTO" End If End Sub `Allegati:
You must be logged in to view attached files.Option Explicit Dim VK_NUMLOCK As Long Function GetKeyState(ByVal nVirtKey As Long) As Long End Function Function IsNumLockOn() As Boolean VK_NUMLOCK = &H90 IsNumLockOn = (GetKeyState(VK_NUMLOCK) And 1) End Function Sub testNum() If IsNumLockOn() Then MsgBox "il NUM BLOCK E' ATTIVO" Else MsgBox "il NUM BLOCK E' SPENTO" End If End SubSono sotto MAC OS.
il codice VBA che ho allegato è in modulo di un file con estensione .xls
Sembra funzioni: mi dice che il NUM BLOCK E' SPENTO.
Bene, come posso fare a renderlo attivo con un'istruzione VBA?
il modo più semplice:
Sub NumLockToggle() SendKeys "{NUMLOCK}{NUMLOCK}" End Subaltirmenti:
'https://stackoverflow.com/questions/42440776/turning-numlock-on-at-the-end-of-a-macro-run #If VBA7 Then Private Declare PtrSafe Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As LongPtr, ByVal dwExtraInfo As LongPtr) Private Declare PtrSafe Function GetKeyboardState Lib "user32.dll" (ByVal lpKeyState As LongPtr) As Boolean #Else Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyboardState Lib "user32.dll" (ByVal lpKeyState As Long) As Boolean #End If Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1 Private Const KEYEVENTF_KEYUP As Long = &H2 Private Const VK_NUMLOCK As Byte = &H90 Private Const NumLockScanCode As Byte = &H45 Private Sub ToggleNumlock(enabled As Boolean) Dim keystate(255) As Byte 'Test current keyboard state. GetKeyboardState (VarPtr(keystate(0))) If (Not keystate(VK_NUMLOCK) And enabled) Or (keystate(VK_NUMLOCK) And Not enabled) Then 'Send a keydown keybd_event VK_NUMLOCK, NumLockScanCode, KEYEVENTF_EXTENDEDKEY, 0& 'Send a keyup keybd_event VK_NUMLOCK, NumLockScanCode, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0& End If End Sub Public Sub NumLockOn() ToggleNumlock True End SubSendKeys "{NUMLOCK}{NUMLOCK}"
ovviamente
Application.SendKeys "{NUMLOCK}{NUMLOCK}"SendKeys "{NUMLOCK}{NUMLOCK}"
purtroppo mi da: comando non disponibile in Macintosh ...
mannaggia ...
-
AutoreArticoli
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
