Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilennummer der letzten Zelle

Zeilennummer der letzten Zelle
15.08.2007 13:21:49
Harald
Hallo,
ich brauche beim Zellenwechsel die Zeilennummer der Zelle, die ich gerade verlasse( dabei kann es sein, dass ich nur in die nächste Spalte springe oder auch in eine beliebige andere Zeile).
Mit Worksheet_SelectionChange bekomme ich doch wohl nur die Nummer der neuen Zeile. Leider gibt es ja kein Worksheet_BeforeSelectionChange.
Wer kann mir weiterhelfen?
m.f.g.
Harald

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilennummer der letzten Zelle
15.08.2007 13:27:00
Renee
Hi Harald,

Option Explicit
Public sPreAdr As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If sPreAdr  "" Then MsgBox "Du kommst von " & sPreAdr
sPreAdr = Target.Cells(1, 1).Address(False, False)
End Sub


Greetz Renee

AW: Zeilennummer der letzten Zelle
15.08.2007 13:45:16
Harald
Hallo Renee,
vielen Dank - es klappt!
m.f.g.
Harald

AW: Zeilennummer der letzten Zelle
15.08.2007 13:27:52
Ramses
Hallo
"...ich brauche beim Zellenwechsel die Zeilennummer der Zelle, die ich gerade verlasse..."
Schreib zwei Variablen in ein eigenes Modul
Public OldCell as Range
Public NewCell as Range
in das Worksheet_SelectionChange Ereignis schreibst du dann
If IsEmpty(OldCell) then
OldCell = Target
NewCell = Target
Else
OldCell = NewCell
NewCell = Target
End If
Dann kannst du mit
OldCell.Row die Zeile oder sonstwas aus dem Object Abfragen
Gruss Rainer

Anzeige
AW: Zeilennummer der letzten Zelle
15.08.2007 13:48:00
Harald
Hallo Rainer,
vielen Dank für deine Hilfe - diese Version funktioniert genau wie die von Renee
m.f.g.
Harald

AW: Zeilennummer der letzten Zelle
15.08.2007 14:56:19
Ramses
Hallo
"...diese Version funktioniert genau wie die von Renee..."
Tut sie nicht,... sie ist besser :-)
Weil du bei meiner Version direkt auf das Object zugreifst, während Renee nur den Adressstring speichert.
Bei meiner Version kriegst du mit
OldCell.Value
OldCell.Row
OldCell.Column
direkt den Wert. Bei Renee's Lösung geht das nur über den Umweg des Range-Objectes mit "implantierten" Adress-String :-)
Aber im Prinzip hast du Recht, sie funktionieren beide :-)
Gruss Rainer

Anzeige
...meine ist viel schöner
15.08.2007 15:11:14
Renee
Userbild
...weil da so ein lustiges Böxchen aufpoppt und bei Ramses passiert gar nix...
zudem kommt meine mit nur einer Variablen aus
XD Renee

Ja, ja...
15.08.2007 15:39:53
Ramses
Hallo
...aber der Benutzer hat sowieso schon genug mit seinen anderen "Böxchen" zu tun, da dachte ich mir ich verrschone ihn mit weiteren :-)
Userbild
Gruss Rainer

AW: Ja, ja...
17.08.2007 08:22:00
Harald
Hallo Rainer,
ich habe folgendes Problem mit deinem Code:
Beim Zellenwechsel springt er sofort in den Else-Teil und gibt beim Ausführen von OldCell = NewCell folgende Fehlermeldung aus:
Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt.
Was mache ich falsch?

Anzeige
AW: Ja, ja...
17.08.2007 08:36:00
Renee
Hallo Harald
Damit auch dieses (nicht gewünchste) Böxchen nicht mehr kommt.
Probier mal:

'Im Modul:
Public OldCell As Range
Public NewCell As Range
'In der Tabelle:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If OldCell Is Nothing Then
Set OldCell = Target
Set NewCell = Target
Else
Set OldCell = NewCell
Set NewCell = Target
End If
End Sub


AW: Ja, ja...
17.08.2007 09:00:00
Harald
Hallo Renee,
ich habe zum Test nun mal nur die Kurzform genommen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set OldCell = Target
End Sub


Vielen Dank für die Hilfe - nun kommt keine Fehlermeldung mehr, aber in Target steht nun immer der Inhalt der neuen Zelle, nicht aber die Zeile und Spalte der Zelle, die ich gerade verlassen habe.
m.f.g.
Harald

Anzeige
AW: Ja, ja...
17.08.2007 09:38:14
Renee
Hallo Harald,
1. Wenn Du dauernd Änderungen (die Du anscheinend, nicht verstehst) an den Vorschlägen machst, kommt das nicht gut...
2. Im Target steht immer die neue Zelle, weil das von Excel als Input-Parameter an das Selection-Change-Ereignis übergeben wird.
3. Im Originalcode steht die vorherige Zelle (nach [aber nicht während] dem 1sten Durchlauf) in OldCell
Greetz Renee

AW: Ja, ja...
17.08.2007 14:23:00
Harald
Hallo Renee,
entschuldige bitte, wenn ich deine Beschwerde nicht ganz verstehe.
Ich habe doch keine Änderungen gemacht, die sich auf das Verhalten auswirken - ich habe nur (um es halt ganz einfach testen zu können) die if-Anweisung weggelassen , so dass OldCell jetzt auf alle Fälle den Wert von Target zugewiesen bekommt.
Ich dachte, dass ich damit die Zellposition bekommen könnte, aber das war mit deinem anderen Code von gestern:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If sPreAdr  "" Then MsgBox "Du kommst von " & sPreAdr
sPreAdr = Target.Cells(1, 1).Address(False, False)
End Sub


Komme ich damit an die Spalte und Zeile direkt ran?
m.f.g.
Harald

Anzeige
AW: Ja, ja...
17.08.2007 14:36:56
Ramses
Hallo
OldCell kannst du nun abfragen mit
msgbox OldCell.Address
msgbox OldCell.Row
msgbox OldCell.Column
Gruss Rainer

Ich hab doch nix geändert...
17.08.2007 14:55:49
Renee
Ich kann's mir doch nicht verkneifen...
Du hast aus dem:

'Im Modul:
Public OldCell As Range
Public NewCell As Range
'In der Tabelle:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If OldCell Is Nothing Then
Set OldCell = Target
Set NewCell = Target
Else
Set OldCell = NewCell
Set NewCell = Target
End If
End Sub
das gemacht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set OldCell = Target
End Sub


und dann kommt der Satz Ich habe doch keine Änderungen gemacht, die sich auf das Verhalten auswirken
... da kann ich nur antworten.... "Herr oder Frau hilf Ihnen, den sie wissen nicht was sie tun..."
Renee

Anzeige
AW: Ich hab doch nix geändert...
17.08.2007 15:23:00
Harald
Hallo Renee,
das ist es was auch ich meine - ich brauche zwar die if-Abfrage, aber da mein Fehler beim
set OldCell=target
war, konnte ich doch das andere zum testen weglassen! Ich sende doch auch nicht den Rest des Programmes, das 45 MB gross ist. Jetzt kommt es natürlich wieder rein.
Also nochmals vielen Dank für die Hilfe.
m.f.g.
Harald

AW: Der langen Rede, kurzer Sinn...
17.08.2007 14:37:04
Renee
Hi Harald,
So vielleicht (Code im entsprechenden Tabellenblatt) :

Public lPreRow As Long
Public lPreCol As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If lPreRow  0 Then
' Hier machst Du jetzt was mit lPreRow und/oder lPreCol
MsgBox "Du kommst von Zeile:" & lPreRow & " Spalte:" & lPreCol
End If
lPreRow = Target.Row
lPreCol = Target.Column
End Sub


Achtung: Hat die gleiche Einschränkung wie oben. (1ster Durchlauch speichert, ab 2tem Durchlauf steht die vorhergie Spalte in lPreCol und die vorherige Zeile in lPreRow zur Verfügung).
Greetz Renee

Anzeige
AW: Zeilennummer der letzten Zelle
15.08.2007 15:22:00
Harald
stimmt, da ich wohl auch die Spalte benötige, bin ich mit deiner Version besser bedient!
m.f.g.
Harald

AW: Zeilennummer der letzten Zelle
15.08.2007 13:29:00
Rudi
Hallo,

Wer kann mir weiterhelfen?


Ich.


Dim lngOldRow As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox lngOldRow
lngOldRow = Target.Row
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Zeilennummer der letzten Zelle
15.08.2007 13:58:07
Harald
Hallo Rudi,
auch dir vielen Dank - nun habe ich schon drei funktionierende Versionen zur Auswahl!
m.f.g.
Harald
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige