Hi All,
hier noch eine erweiterte Lösungsmöglichkeit, wenn man wirklich nur den Linksklick auf eine einzelne, freie
Zelle auswerten will, ohne bestehende Inhalte zu überschreiben oder Probleme beim Verschieben bzw.
Markieren von Bereichen per Tastatur zu bekommen.
Auch dieser Code gehört in das Modul "DieseArbeitsmappe" und klappt in all meinen Tests hervorragend.
[code]Dim Inhalt, sk As String
Private Sub Workbook_Activate()
Application.OnKey "{LEFT}", "'DieseArbeitsmappe.Verschieben ""{LEFT}""'"
Application.OnKey "{UP}", "'DieseArbeitsmappe.Verschieben ""{UP}""'"
Application.OnKey "{RIGHT}", "'DieseArbeitsmappe.Verschieben ""{RIGHT}""'"
Application.OnKey "{DOWN}", "'DieseArbeitsmappe.Verschieben ""{DOWN}""'"
Application.OnKey "{ENTER}", "'DieseArbeitsmappe.Verschieben ""{ENTER}""'"
Application.OnKey "{RETURN}", "'DieseArbeitsmappe.Verschieben ""{RETURN}""'"
Application.OnKey "{TAB}", "'DieseArbeitsmappe.Verschieben ""{TAB}""'"
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}"
Application.OnKey "{UP}"
Application.OnKey "{RIGHT}"
Application.OnKey "{DOWN}"
Application.OnKey "{ENTER}"
Application.OnKey "{RETURN}"
Application.OnKey "{TAB}"
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As
Boolean)
Target = Inhalt
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Inhalt = Target
If Target.Cells.Count = 1 And ActiveCell.Value = "" And sk = "" Then
Target = "x" '<-- Hier den Benutzercode angeben
End If
If sk <> "" Then
Application.OnKey sk, "'DieseArbeitsmappe.Verschieben """ & sk & """'"
sk = ""
End If
End Sub
Sub Verschieben(myKey As String)
x = 1
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
Application.OnKey myKey
WshShell.SendKeys IIf(myKey = "{RETURN}", "{ENTER}", myKey), True
sk = myKey
End Sub[/code]Gruß Mr. K.