Zellensprung mit old value ?

Bild

Betrifft: Zellensprung mit old value ?
von: udo
Geschrieben am: 13.10.2015 10:21:25

Hallo Zusammen,
bräuchte bitte eure Hilfe bei folgendem Zusammenhang
Umgebung wie folgt:
Habe ein Tabellenblatt ... Bereich N22:OT200, in diesem bewege ich mich
unterschiedlich mal hier mal da immer an der gewählten Zellposition anschließend
per Tastatur_Pfeil dann weiters nach rechts oder dann wieder zurück nach links.
In der mit der Maus gewählten Zelle steht zB ein Kürzel " AB " wenn ich jetzt
nach rechts springe, soll er mir " AB " in die Zelle rechts daneben übernehmen
zB. im Selection.Change Ereignis mit ( r & c sind deklariert als activecell.row usw. )
Cells(r, c).Value = Cells(r, c - 1).Value
wenn ich nach einigen Sprüngen nach rechts dann merke, dass ich zB drei zuviel
erweitert / kopiert habe, dann würde ich wieder nach links springen, und er würde mir dann die vorherige Übernahme des Zellwertes der Zelle ( links nebenan " AB " ) wieder löschen ... " "
If Cells(r, c + 1) = "" Then Cells(r, c) = ""
und zwar wenn die rechte Zelle daneben auch leer ist ...
Mir geht es also einfach darum, bei Sprung nach rechts den Wert zu erweitern und nach links ihn wieder zu entfernen.
Knackpunkt dabei ist wohl so eine Art " zu Erkennen " von wo aus er zuletzt gesprungen ist ... gibts da so eine Art old value ...
Habt ihr ne Idee ?
wäre euch sehr dankbar
udo

Bild

Betrifft: bin gerade an einer Lösung dran, poste sie anschl.
von: udo
Geschrieben am: 13.10.2015 11:04:34
.. bin gerade dabei über entsprechende Bedingungen das Verhalten beim Springen zu bestimmen.
poste es anschließend noch hoch ...

Bild

Betrifft: AW: so funktioniert es ganz gut ...
von: udo
Geschrieben am: 13.10.2015 14:03:55
Hallo zusammen, für Alle die mal in ähnliche Probleme stolpern, hier mein Lösungsansatz.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Exit Sub
On Error GoTo Ende:
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'    Deklarierung :
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     
     Dim r As Long, c As Long
     r = ActiveCell.Row
     c = ActiveCell.Column
     
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'    Sprünge :
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     
     
     Application.ScreenUpdating = False
     
     '  Sprungbereich von N22 : OW200
     If Target.Row >= 22 And Target.Row <= 200 And Target.Column >= 14 And Target.Column <= 450  _
Then GoTo Bereich:
     
     
     GoTo Ende:
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'    Anweisungen :
'     _
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Bereich:
    
     '  Automatisches Füllen ein wenn in J17 "A" steht ( wird per extra Makro ein-  _
ausgeschaltet )
     If [j17] = "A" Then
     
     '  wenn vorherige Zelle und nachfolgende Zelle istgleich aktuelle Zelle ( Beim Sprung  _
mittenrein )
     If Cells(r, c + 1).Value = Cells(r, c).Value And Cells(r, c + 2).Value = "" Then
        Cells(r, c + 1).Value = ""
        'GoTo Ende:
        End If
             
     '  wenn Zelle ungleich vorherige Zelle und ungleich leer - dann nichts machen
     If Cells(r, c).Value <> Cells(r, c - 1).Value And Cells(r, c) <> "" Then
        GoTo Ende:
        End If
            
     '  wenn vorherige Zelle istgleich aktuelle Zelle und nächste Zelle istgleich leer
     If Cells(r, c - 1).Value = Cells(r, c).Value And Cells(r, c + 1) = "" Then
        Cells(r, c + 1) = ""
        GoTo Ende:
        End If
        
     '  aktuelle Zelle entspricht vorherige Zelle
        Cells(r, c).Value = Cells(r, c - 1).Value
        
     '  wenn nächste Zelle istgleich aktuelle Zelle
     If Cells(r, c + 1).Value = Cells(r, c).Value And Cells(r, c + 2).Value <> Cells(r, c). _
Value Then
        Cells(r, c + 1) = ""
        GoTo Ende:
        End If
        
        End If ' "A" Abfrage
        End If ' Target Sprung
       
     
Ende:
End Sub

Grüße udo

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wenn(Und formel was mach i falsch"