Aktive Zelle nicht verlassen
#1
Hallo zusammen.

Ich habe mehrere Arbeitsblätter in denen ich z.B. zur Kontrolle in erine bestimmte Zelle z.B. Q1 eine Zahl eingebe und erhalte dann eine Auflistung von Artikeln. Nach jeder Eingabe ist ja dann das Feld daneben markiert was mich erheblich nerft da ich für jede weitere Eingabe immer wieder den Cursor auf die Zelle Q1 zurücksetzen muss. Im Internet habe ich unten aufgeführten Code gefunden. Dieser steht in dem entsprechenden Arbeitsblatt und funktioniert auch. Das Problem ist jedoch, dass alle Zellen betroffen sind und nicht nur Q1.
Wie müsste der Code lauten, dass er nur in diesem Arbeitsblatt und nur für die Zelle Q1 wirksam ist?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Activate
End Sub
MfG Peter

WIN 10  /  MS 365
Antworten Top
#2
Hallo Peter,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$Q$1" Then
    Target.Activate
  End If
End Sub

Gruß, Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Jockel
Antworten Top
#3
oder, falls es anderswo in Excel nicht stört, schaue nach dieser Option:
   

Die könnte man auch beim Öffnen oder aktivieren der Mappe abstellen und beim Schließen oder deaktivieren wieder einschalten.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo André,

(03.08.2025, 11:31)ahpzet schrieb: Das Problem ist jedoch, dass alle Zellen betroffen sind und nicht nur Q1.
Wie müsste der Code lauten, dass er nur in diesem Arbeitsblatt und nur für die Zelle Q1 wirksam ist?

Gruß, Uwe
Antworten Top
#5
Hallo Uwe

Vielen Dank für Deine schnelle u. perfekte Antwort. Test erfolgreich.

Hallo schauan

Leider kann ich mit Deiner Hilfe nichts anfangen denn beim Aufruf Deines Bildes kommt ein schwarzes Bild mit Neudeutschem Text und es gibt in Deutschland noch Leute die kein Neudeutsch können.

Aber das ist nicht tragisch denn Uwe hat mir ja hervorragend geholfen.
MfG Peter

WIN 10  /  MS 365
Antworten Top
#6
Hallo Peter,

wenn bei Dir nur ein schwarzes Bild kommt, dann schreibe bitte mal Dein System und Browser auf damit ich das eventuell testen kann.

@Uwe,
Jupp, da stand ja, dass das Problem ist, das es überall wirkt und nicht, dass es die Aufgabe ist Wink

Wenn man die Cursorbewegung nur und generell innerhalb einer Datei nicht möchte, geht das in die Richtung. Also, auch wenn's nicht gefragt war, hier für alle die Lösung: Eventuell hilft's je einem anderen Leser.


Code:
Private Sub Workbook_Activate()
Application.MoveAfterReturn = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.MoveAfterReturn = True
End Sub

Private Sub Workbook_Deactivate()
Application.MoveAfterReturn = True
End Sub

Private Sub Workbook_Open()
Application.MoveAfterReturn = False
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Hallo schauan

Irgendwie wollte mich mein PC etwas ärgern denn als ich dein Bild nochmals aufrufen wollte um ein Bild von der Meldung zu machen, kam nun das richtige Bild mit den Einstellmöglichkeiten.

Derzeit arbeite ich noch mit WIN 10 und mit Mozilla Firefox der aber laufend neue Updates erhält.

Was die 3 beigefügten VBA Codes betrift, wäre es für mich sehr sehr hilfreich wenn sie eine Kommentarzeile mit Funktionshinweis enthalten würden.  Wäre ich in VBA so fitt wie Du hätte ich keine Hilfe zu dem VBA Code benötigt.

Trotzallem vielen Dank für deine Hilfe.
MfG Peter

WIN 10  /  MS 365
Antworten Top
#8
Hallo Peter,

normalerweise kommentiere ich auch sehr viel - manchmal jede Zeile Wink

Hier in dem Fall geht es nur um die auf dem Bild zu sehende Option - die in VBA als Application.MoveAfterReturn bezeichnet wird.
Application, weil es eben für "ganz" Excel gilt, solange nix anderes programmiert oder Excel beendet wird.

Konsequenterweise sollte man schauen, mit was der Anwender zuvor gearbeitet hat. Nicht dass man ihm seine "Standardeinstellung" versaut.
Man könnte dazu z.B. eine global definierte Variable am Anfang des Moduls nutzen, in der man den Zustands speichert.

Also im Prinzip

Code:
Dim boMausMove As Boolean 'boolsche Variable zur Speicherung  

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'vorige Einstellungen der Mausbewegung wiederherstellen
Application.MoveAfterReturn = boMausMove
End Sub

Private Sub Workbook_Open()
'Einstellung der Mausbewegung ermitteln
boMausMove = Application.MoveAfterReturn
'Mausbewegung abstellen
Application.MoveAfterReturn = False
End Sub

Das bräuchte man z.B. bei Uwe's Code nicht.

Das andere hatte ich im Beitrag unter dem Bild beschrieben, also die 4 Events / Aktionen, bei denen man das einfügt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Hallo schauan

Danke dass Du nochmals geantwortet hast.
Leider war ich etwas voreilig mit dem Kommentarhinweis denn als ich mich danach mit dem Code nochmals genauer befasst habe, ist mir klar geworden welcher Code was macht. 
Nur eine einfache Zeile wie z.B. Hiermit wird Return wieder aktiviert würde meiner Meinung nach schon viel helfen. Es muss nicht jede Zeile kommentiert werden. Das würde viel zu viel von Deiner Freizeit und der Hilfe für andere kosten.
MfG Peter

WIN 10  /  MS 365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste