Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Button per Tastaur auswählbar?
#1
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?
Antworten Top
#2
Hi,

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

Win10 - Office365 / MacOS - Office365
Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • o0Julia0o
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an daNorbert für diesen Beitrag:
  • o0Julia0o
Antworten Top
#5
(01.06.2023, 15: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...)
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • o0Julia0o
Antworten Top
#6
(01.06.2023, 15: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, 15: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?
Antworten Top
#7
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
[-] Folgende(r) 1 Nutzer sagt Danke an daNorbert für diesen Beitrag:
  • o0Julia0o
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste