Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Cursor springen | Herbers Excel-Forum


Betrifft: Cursor springen von: Erich Müller
Geschrieben am: 14.01.2012 10:04:00

Hallo zusammen,

nach dem wählen eines bestimmten Tabellenblattes soll der Cursor zwischen den Zeilen 4 und 309 immer auf der ersten leeren Zelle der Spalte K stehen. Und zwar unterhalb gefüllter K-Zellen. Gibt es dazwischen Leerzellen in K, soll er auf der ersten leeren K-Zelle stehen.
Nach Eingeben eines Zahlenwertes in dieser Zelle, soll er auf die L-Zelle springen. Habe ich auch die L-Zelle mit einem Zahlenwert gefüllt, soll er auf die nächste freie K-Zelle hüpfen.

Ich bitte um Hilfe.

Gruß EM

  

Betrifft: AW: Cursor springen von: Josef Ehrensberger
Geschrieben am: 14.01.2012 10:37:14


Hallo Erich,

probier mal.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim rng As Range
  On Error Resume Next
  Set rng = Range("K6:K309").SpecialCells(xlCellTypeBlanks).Cells(1, 1)
  On Error GoTo 0
  If Not rng Is Nothing Then Application.Goto rng
  Set rng = Nothing
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range
  If Not Intersect(Target, Range("K6:L309")) Is Nothing Then
    On Error Resume Next
    If Target(1, 1).Column = 11 Then
      Set rng = Range("L6:L309").SpecialCells(xlCellTypeBlanks).Cells(1, 1)
    Else
      Set rng = Range("K6:K309").SpecialCells(xlCellTypeBlanks).Cells(1, 1)
    End If
    On Error GoTo 0
    If Not rng Is Nothing Then Application.Goto rng
  End If
  Set rng = Nothing
End Sub






« Gruß Sepp »



  

Betrifft: AW: Cursor springen von: Oberschlumpf
Geschrieben am: 14.01.2012 10:44:24

Hi Erich

Ich hab auch ne Idee:
https://www.herber.de/bbs/user/78440.xls

Hilfts?

Ciao
Thorsten


  

Betrifft: AW: Cursor springen von: fcs
Geschrieben am: 14.01.2012 11:48:53

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



  

Betrifft: DANKE von: Erich Müller
Geschrieben am: 14.01.2012 12:39:57

Herzlichen Dank an Euch,

alle drei Lösungen passen !!!!!
Da wäre aber noch eine Frage : Was ändert sich an Euren Lösungen, wenn von K nach L nach M und N
gesprungen wird.
Erst nach der N-Eingabe soll der Cursor zurück auf K.

Gruß EM


  

Betrifft: AW: DANKE von: Josef Ehrensberger
Geschrieben am: 14.01.2012 13:37:09


Hallo Erich,

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim rng As Range
  On Error Resume Next
  Set rng = Range("K6:K309").SpecialCells(xlCellTypeBlanks).Cells(1, 1)
  On Error GoTo 0
  If Not rng Is Nothing Then Application.Goto rng
  Set rng = Nothing
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, lngC As Long
  If Not Intersect(Target, Range("K6:N309")) Is Nothing Then
    On Error Resume Next
    lngC = Target(1, 1).Column - 10
    If lngC > 3 Then lngC = 0
    Set rng = Range("K6:K309").Offset(0, lngC).SpecialCells(xlCellTypeBlanks).Cells(1, 1)
    On Error GoTo 0
    If Not rng Is Nothing Then
      Application.Goto rng
    Else
      Application.Goto Range("K6:K309").Offset(0, lngC).Cells(1, 1)
    End If
  End If
  Set rng = Nothing
End Sub






« Gruß Sepp »



  

Betrifft: AW: DANKE Sepp von: Erich Müller
Geschrieben am: 14.01.2012 14:13:02

.


  

Betrifft: AW: DANKE von: Erich Müller
Geschrieben am: 14.01.2012 22:15:53

.


  

Betrifft: Antworten gefunden von: Erich Müller
Geschrieben am: 15.01.2012 11:31:21

Hallo zusammen,



Frage hat sich erledigt.



Gruß EM


Beiträge aus den Excel-Beispielen zum Thema "Cursor springen "