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

Forumthread: Cursor zurück nach "ursprüngliche" Position

Cursor zurück nach "ursprüngliche" Position
02.09.2005 16:55:30
Thierry
Hallo zusammen!
Ich benötige mal wieder Eure Hilfe.
Ich habe eine Tabelle erstellt (Bereich A5 bis AV28). Der User muss Zeile per Zeile ausfüllen und immer von links nach rechts. Dafür habe ich auch die Funktion der Entertaste geändert (siehe VBA Code)

Private Sub Workbook_Activate()
Application.MoveAfterReturnDirection = xlToRight
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.MoveAfterReturnDirection = xlDown
End Sub
.
In der Spalte (A) wird immer der Name des Kunden erwähnt.
In der Spalte (B) öffnet sich eine Userform die dazu dient, alle restlichen Zellen (A5 bis A28) auszufüllen.
Je nachdem was für Eingaben in den restlichen Spalten getätigt werden, öffnen sich dann weitere Userforms. Die dort eingegebenen Daten, werden auf dem gleichen Blatt, aber immer an verschiedenen Orten abgelegt. Somit können sich nacheinander für jede Zeile 3 – 4 Userforms öffnen.
Bis dahin funktioniert komischerweise alles einwandfrei
Ich möchte aber, dass wenn die letzte Userform geschlossen wird, der Cursor automatisch in die „ursprüngliche“ Position zurückkehrt.
Also, wenn die Zelle A5 bis AV 5 ausgefüllt wurde, sollte der Cursor in die Zelle A6 (erste freie Zelle) zurückkehren. Wenn die Zelle A6 bis AV 6 ausgefüllt wurde, sollte der Cursor in die Zelle A 7 zurückkehren usw. Somit kann der User sofort weiterarbeiten. Oberhalb und unterhalb der Spalte A5 und A28 sind die Zellen besetzt.
Welchen VBA Code muss ich meiner Userform anfügen damit dies funktioniert.

Private Sub cmdConfermareCrossSellingNo_Click()
On Error GoTo Fehler
Cells(ActiveCell.Row, 52) = txtCrossSellingNo.Value
Unload Me
usfCrossSellingNo.Hide
Fehler:
usfCrossSellingNo.Hide
End Sub

Für die professionelle und schnelle Antwort danke ich Euch im voraus.
Thierry
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cursor zurück nach "ursprüngliche" Position
02.09.2005 17:02:13
Uduuh
Hallo,
Range("A65536").end(xlup).offset(1,0).select
Gruß aus’m Pott
Udo

AW: Cursor zurück nach "ursprüngliche" Position
02.09.2005 17:51:59
Thierry
Hallo Udo
Leider funktioniert
Range("A65536").end(xlup).offset(1,0).select
nicht, da die Zelle A 29 und folgende besetzt sind. Kann man deinen Code nur für den Bereich A5 bis A 28 definieren?
Gruss.
Thierry
Anzeige
AW: Cursor zurück nach "ursprüngliche" Position
02.09.2005 18:21:02
Dieter
Range("A4").end(xlDown).offset(1,0).select
AW: Cursor zurück nach "ursprüngliche" Position
02.09.2005 18:36:24
Thierry
Hallo Dieter
Funktioniert perfekt für die Zeile A5. Sobald ich mich aber auf die Zeile A6 befinde, bleibt der Curser immer auf die gleiche Zeile. Warum?
Gruss
Thierry
AW: Cursor zurück nach "ursprüngliche" Position
04.09.2005 17:32:39
Thierry
Hallo Udo, Hallo Dieter
Das Problem hat sich erledigt. Ich habe die Darstellung des Blattes geändert und die Formel von Udo übernommen. Vielen Dank. Thierry
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Cursor zurück nach "ursprüngliche" Position in Excel


Schritt-für-Schritt-Anleitung

Um den Cursor nach dem Schließen einer Userform in Excel zurück zur "ursprünglichen" Position zu bewegen, kannst Du folgenden VBA-Code verwenden:

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Wähle das entsprechende Arbeitsblatt, auf dem Deine Userform verwendet wird.
  3. Füge den folgenden Code in das Modul Deiner Userform ein:
Private Sub cmdConfermareCrossSellingNo_Click()
    On Error GoTo Fehler
    Cells(ActiveCell.Row, 52) = txtCrossSellingNo.Value
    Unload Me
    ' Cursor zurück zur nächsten freien Zeile in Spalte A
    Cells(Range("A5:A28").Find("*", , , xlWhole).Row + 1, 1).Select
    Exit Sub
Fehler:
    UsfCrossSellingNo.Hide
End Sub

Dieser Code sorgt dafür, dass nach dem Schließen der Userform der Cursor in die nächste freie Zelle in der Spalte A zurückkehrt.


Häufige Fehler und Lösungen

  • Problem: Der Cursor bleibt auf der gleichen Zeile, wenn die Userform geschlossen wird.

    • Lösung: Stelle sicher, dass der Code zum Bewegen des Cursors nach dem Schließen der Userform korrekt implementiert ist. Überprüfe, dass der Bereich A5 bis A28 nicht überschrieben wird.
  • Problem: Der Code Range("A65536").end(xlup).offset(1,0).select funktioniert nicht.

    • Lösung: Dieser Code bezieht sich auf die gesamte Spalte und funktioniert nur, wenn die Zellen darunter leer sind. Verwende stattdessen den oben genannten Code, der auf den spezifischen Bereich A5 bis A28 verweist.

Alternative Methoden

Eine alternative Methode zur Rücksetzung des Cursors könnte die Verwendung von Excel-Tabellen sein. Wenn Du Deine Daten in einer Excel-Tabelle (z.B. als Tabelle1) organisierst, kannst Du den Cursor einfacher verwalten und die Navigation optimieren.

Ein Beispiel dafür wäre:

Dim LastRow As Long
LastRow = Range("Tabelle1[Name]").Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(LastRow, 1).Select

Diese Methode sorgt dafür, dass der Cursor immer zur ersten leeren Zeile in der Tabelle springt.


Praktische Beispiele

  1. Beispiel mit Userform und Datenbank: In einer Userform für die Eingabe von Kundendaten könntest Du den oben genannten Code verwenden, um sicherzustellen, dass nach jeder Eingabe der Cursor zur nächsten Zeile springt.

  2. Beispiel in einem Dashboard: Wenn Du ein Dashboard mit mehreren Userforms hast, kann der Code helfen, die Eingabedaten zu organisieren und den Arbeitsfluss zu verbessern, indem er den Cursor immer an die richtige Stelle bringt.


Tipps für Profis

  • Achte darauf, dass Du den richtigen Bereich in Deinem VBA-Code angibst, um unerwartete Fehler zu vermeiden.
  • Nutze die Möglichkeit, benutzerdefinierte Funktionen in VBA einzuführen, um die Benutzererfahrung weiter zu verbessern.
  • Teste Deinen Code regelmäßig, um sicherzustellen, dass alle Userforms und Eingaben reibungslos funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, wenn ich mehr Zeilen benötige? Du kannst den Bereich in Cells(Range("A5:A28").Find("*", , , xlWhole).Row + 1, 1).Select anpassen, um einen größeren Bereich zu berücksichtigen.

2. Was mache ich, wenn der Cursor nicht zur nächsten freien Zelle springt? Überprüfe, ob in den Zellen unterhalb des aktuellen Bereichs Daten vorhanden sind. Stelle sicher, dass der Code korrekt auf den gewünschten Bereich verweist.

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