Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pfeiltaste per VBA ansprechen

Pfeiltaste per VBA ansprechen
30.12.2019 13:58:46
Ernst
Hallo Forum
Ich benötige Eure Hilfe.
Mit dem unten stehenden Code füge ich ein Kürzel ein.
Nun möchte ich nicht die Zahlentastatur hierfür verwenden, sondern die Pfeiltastatur, d.h., anstelle
der Zahlentaste z.B. 8 die Pfeiltaste nach oben und dadurch soll "o" eingefügt werden.
Bitte um Hilfe
mfg
Ernst Dunkel
Dim r As Integer
Dim c As Integer
For r = Target.Row To Target.Row + Target.Rows.Count - 1
For c = Target.Column To Target.Column + Target.Columns.Count - 1
If c = 2 And r > 19 And r Application.EnableEvents = False
If Cells(r, c) = "8" Then Cells(r, c) = "o"
If Cells(r, c) = "2" Then Cells(r, c) = "u"
If Cells(r, c) = "4" Then Cells(r, c) = "l"
If Cells(r, c) = "6" Then Cells(r, c) = "r"
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfeiltaste per VBA ansprechen
30.12.2019 14:43:12
Nepumuk
Hallo Ernst,
in das Modul "DieseArbeitsmappe":
Option Explicit

Private Sub Workbook_Activate()
    With Application
        Call .OnKey(Key:="{UP}", Procedure:="'Insert ""o""'")
        Call .OnKey(Key:="{DOWN}", Procedure:="'Insert ""u""'")
        Call .OnKey(Key:="{LEFT}", Procedure:="'Insert ""l""'")
        Call .OnKey(Key:="{RIGHT}", Procedure:="'Insert ""r""'")
    End With
End Sub

Private Sub Workbook_Deactivate()
    With Application
        Call .OnKey(Key:="{UP}")
        Call .OnKey(Key:="{DOWN}")
        Call .OnKey(Key:="{LEFT}")
        Call .OnKey(Key:="{RIGHT}")
    End With
End Sub

in ein Standardmodul (Menüleiste - Einfügen - Modul):
Option Explicit

Public Sub Insert(ByVal pvstrLetter As String)
    ActiveCell.Value = pvstrLetter
End Sub

Gruß
Nepumuk
Anzeige
AW: Pfeiltaste per VBA ansprechen
30.12.2019 15:58:00
Ernst
Hallo Nepumuk
Vielen Dank für Deine Hilfe.
Im Prinzip funktioniert Dein Code, jedoch möchte ich nicht das Makro manuell ausführen, sondern automatisch! Die Pfeiltasten sollen nur in der Zelle B20 bis B42 zum Beispiel "o" einfügen.
AW: Pfeiltaste per VBA ansprechen
30.12.2019 16:03:32
Nepumuk
Hallo Ernst,
ich versteh nicht. Das Makro wird ausgeführt wenn du auf eine der Pfeiltasten drückst, so habe ich das aus deiner Anfrage verstanden. Dass das nur in bestimmten Zellen gilt ist jetzt nicht eingebaut.
Gruß
Nepumuk
Anzeige
AW: Pfeiltaste per VBA ansprechen
30.12.2019 16:36:53
Ernst
Wahrscheinlich habe ich mein Problem nicht korrekt beschreiben.
Im unten stehenden Code möchte ich nicht mit den Zahlentasten ein "o" etc. einfügen, sondern einfacher mit der Pfeiltastatur.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Integer
Dim c As Integer
For r = Target.Row To Target.Row + Target.Rows.Count - 1
For c = Target.Column To Target.Column + Target.Columns.Count - 1
If c = 2 And r > 19 And r 

Anzeige
AW: Pfeiltaste per VBA ansprechen
30.12.2019 16:41:32
Nepumuk
Hallo Ernst,
das geht nicht ohne die Tasten, so wie ich das gezeigt habe, in eine Prozedur umzuleiten.
Gruß
Nepumuk
AW: Pfeiltaste per VBA ansprechen
30.12.2019 17:00:28
Ernst
Vielen Dank für die Antwort, schade das es nicht geht!
lg
Ernst Dunkel
AW: Pfeiltaste per VBA ansprechen
30.12.2019 18:48:43
Mullit
Hallo,
Nun möchte ich nicht die Zahlentastatur hierfür verwenden, sondern die Pfeiltastatur, d.h.,  _
anstelle
der Zahlentaste z.B. 8 die Pfeiltaste nach oben und dadurch soll "o" eingefügt werden. 
Im Prinzip funktioniert Dein Code, jedoch möchte ich nicht das Makro manuell ausführen, sondern automatisch! Die Pfeiltasten sollen nur in der Zelle B20 bis B42 zum Beispiel "o" einfügen.

da will ich doch nochmal einhaken, bez. auf die beiden Punkte macht Nepumuks Code doch genau was Du willst: automatisiert über die Pfeiltasten einen Buchstaben/Zeichen einfügen.
Du brauchst da nix manuell ausführen, Nepumuks Code ist eventgesteuert, die beiden Ereignisprozeduren gehören ins Arbeitsmappenmodul und belegen den Arrow-Key neu, die Proc Insert wird über die Events getriggert, nicht manuell, Dein Change-Event wird dann nicht mehr benötigt...
Den Bereich könnte man( insbes. Nepumuk ;-)) auch noch einschränken...
Gruß, Mullit
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pfeiltaste in Excel über VBA ansprechen


Schritt-für-Schritt-Anleitung

Um die Pfeiltasten in Excel über VBA zu nutzen, um Buchstaben einzufügen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Füge den folgenden Code ein:

    Option Explicit
    
    Private Sub Workbook_Activate()
       With Application
           Call .OnKey(Key:="{UP}", Procedure:="'Insert ""o""'")
           Call .OnKey(Key:="{DOWN}", Procedure:="'Insert ""u""'")
           Call .OnKey(Key:="{LEFT}", Procedure:="'Insert ""l""'")
           Call .OnKey(Key:="{RIGHT}", Procedure:="'Insert ""r""'")
       End With
    End Sub
    
    Private Sub Workbook_Deactivate()
       With Application
           Call .OnKey(Key:="{UP}")
           Call .OnKey(Key:="{DOWN}")
           Call .OnKey(Key:="{LEFT}")
           Call .OnKey(Key:="{RIGHT}")
       End With
    End Sub
  4. Füge die Insert-Prozedur in ein Standardmodul ein:

    Option Explicit
    
    Public Sub Insert(ByVal pvstrLetter As String)
       ActiveCell.Value = pvstrLetter
    End Sub
  5. Schließe den VBA-Editor und kehre zurück zu Excel.

Nun werden die Pfeiltasten in den Zellen B20 bis B42 den entsprechenden Buchstaben automatisch einfügen.


Häufige Fehler und Lösungen

  • Fehler: Die Buchstaben werden nicht eingefügt.

    • Lösung: Stelle sicher, dass das Makro für die Arbeitsmappe aktiviert ist und dass Du die richtigen Zellen ausgewählt hast. Die Pfeiltasten müssen im aktiven Arbeitsblatt konfiguriert sein.
  • Fehler: Das Makro wird manuell ausgeführt.

    • Lösung: Achte darauf, dass der Code im ThisWorkbook-Modul platziert ist, damit es automatisch über die Pfeiltasten funktioniert.

Alternative Methoden

Anstelle von VBA kannst Du auch Makros verwenden, die über Schaltflächen oder Tastenkombinationen aktiv werden. Dafür kannst Du die Schaltflächen im Menü Entwicklertools verwenden, um Aktionen zu definieren, die beim Klicken ausgeführt werden.


Praktische Beispiele

Hier ist ein Beispiel, wie Du den oben beschriebenen Code anpassen kannst, um spezifische Buchstaben in bestimmten Zellen einzufügen:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Integer
    Dim c As Integer
    For r = Target.Row To Target.Row + Target.Rows.Count - 1
        For c = Target.Column To Target.Column + Target.Columns.Count - 1
            If c = 2 And r > 19 And r < 43 Then
                Application.EnableEvents = False
                If Application.CutCopyMode = False Then
                    If ActiveCell.Value = "UP" Then ActiveCell.Value = "o"
                    If ActiveCell.Value = "DOWN" Then ActiveCell.Value = "u"
                    If ActiveCell.Value = "LEFT" Then ActiveCell.Value = "l"
                    If ActiveCell.Value = "RIGHT" Then ActiveCell.Value = "r"
                End If
                Application.EnableEvents = True
            End If
        Next c
    Next r
End Sub

Tipps für Profis

  • Nutze das Application.EnableEvents = False: Dies verhindert, dass andere Ereignisse während der Ausführung des Codes ausgelöst werden, was die Leistung verbessert.
  • Teste den Code: Stelle sicher, dass Du den Code in einer Kopie Deiner Arbeitsmappe testest, um unerwünschte Änderungen zu vermeiden.
  • Verwende MsgBox zur Fehlersuche: Wenn Du nicht sicher bist, wo der Fehler liegt, kannst Du Meldungen einfügen, die Dir helfen, den aktuellen Stand zu überprüfen.

FAQ: Häufige Fragen

1. Kann ich die Pfeiltasten für andere Buchstaben verwenden?
Ja, ändere einfach die Zuweisungen in der Workbook_Activate-Prozedur, um die gewünschten Buchstaben für jede Pfeiltaste festzulegen.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in Excel 2010 und späteren Versionen problemlos funktionieren. Achte darauf, dass die Makros in den Excel-Optionen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige