PDA

Vollständige Version anzeigen : DEL Taste nur im bestimmten bereich Abfangen


Accesbeginner
07.07.2015, 16:24
Hallo Leute,

ich brauche ein kleines Programm mit welches in einem bestimmten bereich (A1:A9999) die DEL Taste reagieren soll.

Überall anders soll dir DEL Taste Standart Funktionieren. Sobald aber in der Spalte A bis Zeile 9999 die DEL Taste gedrückt wird, soll ein Makro starten.

Und das selbe brauche für die Eingabe bzw. Enter Taste.

Dabei muss aber auch erkannt werden welche Taste nun gedrückt wurde. Schliesslich werden 2 getrennte Makros gestartet.

Bendanke mich im Voraus.

Hajo_Zi
07.07.2015, 16:53
Teil 1
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.
Option Explicit ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)
'***********************************************
'* H. Ziplies *
'* 07.07.15 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'***********************************************
Dim RaBereich As Range ' Variable für Bereich
Dim RaZelle As Range ' Variable für Zelle
Set RaBereich = Range("A1:A9999") ' Bereich der Wirksamkeit
Dim StTarget As String ' Variable = Zellinhalt
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
' von Nepumuk
StTarget = Target
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Target)
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
Application.Undo
If Target <> StTarget And StTarget <> "" Then
Application.Undo
End If
Application.EnableEvents = True
End If
End If
Set RaBereich = Nothing ' Variable leeren
End Sub


Teil 2 musst Du selber lösen, da Du die Aufgabe kennst.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Accesbeginner
07.07.2015, 17:27
Hallo Hajo_Zi,

Herzlichen Dank für deine Hilfe

Wenn ich also im Bereich "A1:A9999" Enter drücke, dann soll Makro1 Ausgeführt werden.

Wenn ich aber im selben Bereich die DEL (Entf) Taste drücke, dann soll Makro2 Ausgeführt werden.

Nun weiss ich wirklich nicht wo ich Makro1 und Makro2 in deinem Code einsetzen soll.

Bitte nochmals um deine Hilfe.

Hajo_Zi
07.07.2015, 17:43
gut Makro del ist vorhanden. Den Rest musst Du selber machen, siehe Beitrag #2.
ich bin dann raus.


<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Accesbeginner
07.07.2015, 19:40
Nochmals Danke.

habe testweise msgbox statt Makro eingesetzt.

Option Explicit ' Variablendefinition erforderlich

Private Sub Worksheet_Change(ByVal Target As Range)
'***********************************************
'* H. Ziplies *
'* 07.07.15 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'***********************************************
Dim RaBereich As Range ' Variable für Bereich
Dim RaZelle As Range ' Variable für Zelle
Set RaBereich = Range("A1:A9999") ' Bereich der Wirksamkeit
Dim StTarget As String ' Variable = Zellinhalt
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
' von Nepumuk
StTarget = Target
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Target)

If Not RaBereich Is Nothing Then

Application.EnableEvents = False

If Target.Value = "" Then

MsgBox "DEL wurde gedrückt" '<<< Hier Makro 2 einsetzen

Application.EnableEvents = True

GoTo BeendeSub

End If

MsgBox "ENTER wurde gedrückt" '<<< Hier Makro 1 einsetzen

Application.EnableEvents = True

End If

End If
BeendeSub:
Set RaBereich = Nothing ' Variable leeren
End Sub

So stimmt es, und Funktioniert wunderbar.

Somit Beitrag GELÖST !

Nochmals Herzlichen Dank für deine Hilfe Hajo_Zi