Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

im excel sheet auf ein Tastaturereignis reagieren

im excel sheet auf ein Tastaturereignis reagieren
01.05.2014 23:55:58
forum
Ich möchte alle Excel-Sheets auf die Taste CapsLock überwachen und wenn diese aktiviert wird dann soll eine Userform angezeigt werden und wenn die CapsLock Taste deaktiviert wird dann soll das Userform wieder ausgeblendet werden.
Wie kann ich in Excel die Tastatur überwachen?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
was soll das ?
02.05.2014 07:31:20
robert
Hi,
Name = forum arbeit?
Anrede fehlt
Gruß fehlt
Kinderstube übersprungen ;-)
Gruß
robert

AW: was soll das ?
02.05.2014 10:14:02
Nepumuk
Hallo,
in das Modul DieseArbeitsmappe:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
    Call TimerStart
End Sub

Private Sub Workbook_Deactivate()
    Call TimerStop
End Sub

in ein normales Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function GetKeyboardState Lib "user32.dll" ( _
    ByRef kbArray As KeyboardBytes) As Long
Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long

Private Type KeyboardBytes
    kbByte(0 To 255) As Byte
End Type

Public Sub TimerStart()
    
    Call SetTimer(Application.hwnd, 0&, 100&, AddressOf TimerRun)
    
End Sub

Public Sub TimerStop()
    
    Call KillTimer(Application.hwnd, 0&)
    
End Sub

Public Sub TimerRun( _
        ByVal pvlngHwnd As Long, _
        ByVal pvlngEventID As Long, _
        ByVal pvlngElapse As Long, _
        ByVal pnlngTimerFunction As Long)

    
    Call ReadKeyboard
    
End Sub

Private Sub ReadKeyboard()
    
    Dim udtkbArray As KeyboardBytes
    
    Call GetKeyboardState(udtkbArray)
    
    If udtkbArray.kbByte(vbKeyCapital) > 0 Then
        
        If Not FormVisible(UserForm1) Then
            
            Call UserForm1.Show
            DoEvents
            
        End If
    Else
        
        If FormVisible(UserForm1) Then
            
            Call Unload(Object:=UserForm1)
            DoEvents
            
        End If
    End If
End Sub

Private Function FormVisible( _
        ByRef probjForm As Object) As Boolean

    
    Dim objForm As Object
    
    For Each objForm In UserForms
        
        If objForm.Name = probjForm.Name Then
            
            FormVisible = objForm.Visible
            Exit For
            
        End If
    Next
End Function

In der Prozedur ReadKeyboard den Userformnamen anpassen! Und du musst im Userform die Möglichkeit des Schließens unterbinden, denn der Timer würde es immer wieder ausrufen solange die CapsLock-Taste gedrückt ist.
Gruß
Nepumuk

Anzeige
AW: was soll das ?
02.05.2014 18:00:12
forumarbeit
@Nepumuk:
Danke für Deinen Tip. Ich schaue mir das mal an vielleicht krieg ich es damit hin.
@robert:
Sorry forum arbeit ist halt mein verwendetes Pseudonym.
Danke
Gruß
J.

AW: was soll das ?
02.05.2014 19:00:34
forumarbeit
Hallo Nepumuk,
ich habe Dein Script an Excel 64bit angepasst und bei mir eingebunden und funktioniert wirklich gut.
Wollte Dir dies noch als Rückmeldung geben.
Danke und Gruß

AW: im excel sheet auf ein Tastaturereignis reagieren
02.05.2014 09:59:05
Hajo_Zi
das finde ich nicht so Klasse. Soll in eine Zelle was mit Großbuchstaben eingetragen werden kommt eine UserForm. Ist das gewollt?

Anzeige
AW: im excel sheet auf ein Tastaturereignis reagieren
02.05.2014 17:13:48
forumarbeit
Nein, ich denke es ist kein Problem, da die Tasten 'shift' , 'CapsLock' , 'NumLock' etc. unterschiedliche codes liefern. Oder?
Leider habe ich in Excel VBA kein Tastaturereignis gefunden. Wie ich das für eine Arbeitsmappe deklarieren kann weiß ich leider nicht.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige