Clever-Excel-Forum

Normale Version: Button per Tastaur auswählbar?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
hi, kann man Buttons in Excel nicht nur per Maus, sondern auch per Tastaturklick auswählbar machen? Indem man z.B. 1 (auf der Tastatur) für den ersten Button und 2 (auf der Tastatur) für den 2. Button auf einem Tabellenblatt auswählen kann?
Hi,

nicht dass ich wüsste. Allerdings könntest du dem Makro, das damit aufgerufen wird, ein Tastaturkürzel mitgeben.
Hallo,

trage bei den Buttons in der jeweiligen Accelerator-Eigenschaft das gewünschte Zeichen ein.

Nun kann man per ALT+ das jeweilige Zeichen den Button aufrufen.

Gruß Uwe
Hallo,

anbei ein Beispiel, wie Du per Tastatur ein Makro starten kannst.
Statt der Msgbox im Beispiel kannst Du einfach den Code Deines Buttons aufrufen.

Falls Du auf unterschiedlichen Blättern unterschiedliche Buttons damit aufrufen willst musst Du halt noch über ActiveSheet.Name prüfen, auf welchem Blatt Dzu bist und den Code entsprechend aufrufen.

LG
Norbert


Code:
Sub tastendruck_setzen()

    Application.OnKey "1", "proc_1"
    Application.OnKey "2", "proc_2"
    Application.OnKey "a", "proc_a"
    Application.OnKey "+a", "proc_aG"
    Application.OnKey "^a", "proc_ctrl_a"
    Application.OnKey "^+a", "proc_ctrl_aG"
         

End Sub
Sub tastendruck_ruecksetzen()

   
    Application.OnKey "1"
    Application.OnKey "2"
    Application.OnKey "a"
    Application.OnKey "+a"
    Application.OnKey "^a"
    Application.OnKey "^+a"


End Sub

Sub proc_1()
    MsgBox ("Taste 1 gedrückt")
End Sub
Sub proc_2()
    MsgBox ("Taste 2 gedrückt")
End Sub
Sub proc_a()
    MsgBox ("Taste a gedrückt")
End Sub
Sub proc_aG()
    MsgBox ("Taste A gedrückt")
End Sub
Sub proc_ctrl_a()
    MsgBox ("Taste ctrl + a gedrückt")
End Sub
Sub proc_ctrl_aG()
    MsgBox ("Taste ctrl + A gedrückt")
End Sub
(01.06.2023, 14:01)Kuwer schrieb: [ -> ]trage bei den Buttons in der jeweiligen Accelerator-Eigenschaft das gewünschte Zeichen ein.
Das geht allerdings nur bei ActiveX-Buttons!
Und die machen gerne mal sonstige Probleme (wie z.B. spontan die Größe ändern...)
(01.06.2023, 14:01)Kuwer schrieb: [ -> ]trage bei den Buttons in der jeweiligen Accelerator-Eigenschaft das gewünschte Zeichen ein.
Nun kann man per ALT+ das jeweilige Zeichen den Button aufrufen.

Das geht nicht. Ich habe 2 dort eingetragen, und drücke parallel Alt + 2, dann wird das Makro aber nicht aufgerufen. Das geht doch. Alt + 2 war bereits belegt. Alt + 4 geht. Jedoch ist man dann ja ziemlich beschränkt.


(01.06.2023, 14:03)daNorbert schrieb: [ -> ]Hallo,

Falls Du auf unterschiedlichen Blättern unterschiedliche Buttons damit aufrufen willst musst Du halt noch über ActiveSheet.Name prüfen, auf welchem Blatt Dzu bist und den Code entsprechend aufrufen.


Und wie geht das mit ActiveSheet.Name prüfen?

Ich möchte auf Tabelle1 per Taste 1 das Makro1T1 aufrufen, per Taste 2 das Makro2T1.
Auf Tabelle2 soll per Taste 1 das Makro1T2, per Taste 2 das Makro2T2 aufgerufen werden.


Code:
Application.OnKey "1", "proc_1"
proc_1 ist dann ein Makroname?
Hallo,

z.B. so:

Code:
Sub tastendruck_setzen()

    Application.OnKey "1", "proc_1"
    Application.OnKey "2", "proc_2"

End Sub
Sub tastendruck_ruecksetzen()
 
    Application.OnKey "1"
    Application.OnKey "2"
 
End Sub

Sub proc_1()
    tastendruckhandler ("1")
End Sub
Sub proc_2()
    tastendruckhandler ("2")
End Sub

Function tastendruckhandler(taste)

    Blatt = ActiveSheet.Name
   
    If Blatt = "Tabelle1" And taste = "1" Then
        MsgBox "Starte Makro1T1"
        Makro1T1
    ElseIf Blatt = "Tabelle1" And taste = "2" Then
        MsgBox "Starte Makro2T1"
        Makro2T1
    ElseIf Blatt = "Tabelle2" And taste = "1" Then
        MsgBox "Starte Makro1T2"
        Makro1T2
    ElseIf Blatt = "Tabelle2" And taste = "2" Then
        MsgBox "Starte Makro2T2"
        Makro2T2
    End If


End Function

Um das ganze zu Aktivieren, bzw. wieder zu deaktivieren am Besten Bei DieseArbeitsmappe noch folgenden Code einfügen (bzw. falls Du dort schon etwas hast in das integrieren.

Code:
Private Sub Workbook_Activate()
    tastendruck_setzen
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    tastendruck_ruecksetzen
End Sub

Private Sub Workbook_Deactivate()
    tastendruck_ruecksetzen
End Sub

Private Sub Workbook_Open()
    tastendruck_setzen
End Sub