AW: Cursor springen
14.01.2012 11:48:53
fcs
Hallo Erich,
und noch eine Variante,
Ich hab deine Frage so verstanden, dass nach Eingabe eines Wertes in Spalte K jeweils die Nachbarzelle in Spalte L selektiert werden soll.
Gruß
Franz
'Code im Tabellenblatt-Modul, dessen Änderungen überwacht werden sollen
Option Explicit
Private Const Zeile1 As Long = 4, Zeile2 As Long = 304
Private Sub Worksheet_Activate()
Call Finden_leere(Spalte:=11, ZeileStart:=Zeile1, ZeileEnde:=Zeile2)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 _
And Not Intersect(Target, Range(Cells(Zeile1, 11), Cells(Zeile2, 12))) _
Is Nothing Then
Select Case Target.Column
Case 11 'Spalte K
If IsEmpty(Target) Then
Target.Select
Else
Cells(Target.Row, 12).Select
End If
Case 12 'Spalte L
If IsEmpty(Target) Then
Target.Select
Else
Call Finden_leere(Spalte:=11, ZeileStart:=Zeile1, ZeileEnde:=Zeile2)
End If
Case Else
'do nothing
End Select
End If
End Sub
'Function kann auch in einem allgemeinen Modul angelegt werden
Public Function Finden_leere(ByVal Spalte As Long, _
Optional ByVal ZeileStart As Long = 1, _
Optional ByVal ZeileEnde As Long = 0, _
Optional ByVal Selektieren As Boolean = True, _
Optional wks As Worksheet) As Range
'Findet 1. Leere Zelle in Spalte bzw. Zeilen-Bereich der Spalte
If wks Is Nothing Then Set wks = ActiveSheet
With wks
If ZeileEnde = 0 Then
ZeileEnde = .Rows.Count
End If
With .Range(.Cells(ZeileStart, Spalte), .Cells(ZeileEnde, Spalte))
Set Finden_leere = .Find(What:="", After:=wks.Cells(ZeileEnde, Spalte), _
LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
If Finden_leere Is Nothing Then
MsgBox "Alle Zellen im Bereich " & .Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& " sind ausgefüllt"
Else
If Selektieren = True Then
.Activate
Finden_leere.Select
End If
End If
End With
End With
End Function