Login Registrati
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #43823 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt

      Buongiorno,

      in VBA c'è modo di sapere se il NUMLOCK sul tastierino numerico è attivo o no?

      grazie!

      #43824 Score: 0 | Risposta

      Oscar
      Partecipante
        45 pts

        Excel 2010  lo segna in fondo a sinistra del foglio aperto

        Va selezionato

        #43825 Score: 0 | Risposta

        ABRAMO48
        Partecipante
          1 pt

          Sono sotto MAC OS.

          non riesco a personalizzare la barra di stato ...

          #43826 Score: 0 | Risposta

          alexps81
          Moderatore
            58 pts

            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.
            #43839 Score: 0 | Risposta

            ABRAMO48
            Partecipante
              1 pt
              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 Sub

              Sono 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?

              #43840 Score: 0 | Risposta

              scossa
              Partecipante
                37 pts

                il modo più semplice:

                Sub NumLockToggle()
                  SendKeys "{NUMLOCK}{NUMLOCK}"
                End Sub

                altirmenti:

                '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 Sub
                #43844 Score: 0 | Risposta

                scossa
                Partecipante
                  37 pts

                  scossa ha scritto:

                  SendKeys "{NUMLOCK}{NUMLOCK}"

                  ovviamente 

                  Application.SendKeys "{NUMLOCK}{NUMLOCK}"
                  #43847 Score: 0 | Risposta

                  ABRAMO48
                  Partecipante
                    1 pt

                    SendKeys "{NUMLOCK}{NUMLOCK}"

                    purtroppo mi da: comando non disponibile in Macintosh ...

                    mannaggia ...

                    #43848 Score: 0 | Risposta

                    ABRAMO48
                    Partecipante
                      1 pt

                      e usare 

                      Application.OnKey "{NUMLOCK}"

                      ?

                    Login Registrati
                    Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
                    Rispondi a: NUMLOCK
                    Gli allegati sono permessi solo ad utenti REGISTRATI
                    Le tue informazioni: