Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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
Inhaltsverzeichnis

Letzte Zeile eines Arbeitsblattes

Letzte Zeile eines Arbeitsblattes
03.11.2022 15:20:52
gml
Hallo
Vielleicht kann mich jemand erleuchten ...
Ich rufe per

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Call Modul1.LetzteZeile
End Sub
die Funktion "LetzteZeile" auf, die im Tabellenblatt die letzte leere Zeile (über mehrere Spalten) feststellt
und diese Zeilennummer in die Zelle Y1 schreiben soll.
Das ist die Funktion "LetzteZeile":

Function LetzteZeile()
Dim LetzteInhaltZeile As Long
With ActiveSheet.Range("A:X")
LetzteInhaltZeile = .Find(What:="*", _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End With
' in Y1
Cells(1, 25) = LetzteInhaltZeile
' MsgBox LetzteInhaltZeile
End Function
Sie erzeugt aber einen Laufzeitfehler 1004. Es hat wohl mit Cells(... zu tun. Wenn ich diese Zeile auskommentiere bekomme ich per MsgBox(.. den richtigen Wert bei jeder Änderung im Arbeitsblatt angezeigt, aber um die Wurst nicht in die Zelle geschrieben.
Achja, es handelt sich um das Tabellenblatt2 mit dem Namen "Schlüssel".
Ich bin dankbar für jeden Hinweis!
LG

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

Betreff
Datum
Anwender
Anzeige
AW: Letzte Zeile eines Arbeitsblattes
03.11.2022 15:36:23
onur
Du produzierst eine Endlosschleife, da das Change-Event eine Funktion aufruft, die eine Zrelle verändert, was wiederum das Change-Event aktiviert usw usw usw..
Vor
Cells(1, 25) = LetzteInhaltZeile
Evenst abschalten und dahinter wieder einschalten mit
Application.EnableEvents = True bzw False.
Anzeige
AW: Letzte Zeile eines Arbeitsblattes
03.11.2022 16:15:06
Rudi
Hallo,
würde ich eher so machen:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(1, 25) = LetzteInhaltZeile(Me)
Application.EnableEvents = True
End Sub
Function LetzteInhaltZeile(wks As Worksheet)
Dim rng As Range
With wks.Range("A:X")
Set rng = .Find(What:="*", _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
End With
If Not rng Is Nothing Then
LetzteInhaltZeile = rng.Row
End If
End Function
Functions dienen dazu, Werte zurückzugeben und nicht dazu, irgendwelche Aktionen (hier: schreiben in Zellen) durchzuführen.
Gruß
Rudi
Anzeige
AW: Letzte Zeile eines Arbeitsblattes
03.11.2022 16:23:15
GerdL
Moin gml,
das Wesen einer Function ist, das sie funktionieren soll. :-)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column 

Public Function LetzteZeile(Optional ByVal Blatt)
Dim LetzteInhaltZelle As Range, lngRow As Long
If IsMissing(Blatt) Then Set Blatt = ActiveSheet
With Blatt.Range("A:X")
Set LetzteInhaltZelle = .Find(What:="*", _
After:=.Cells(1, 1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
If Not LetzteInhaltZelle Is Nothing Then lngRow = LetzteInhaltZelle.Row
.Cells(1, 25) = lngRow
MsgBox lngRow
End With
Set LetzteInhaltZelle = Nothing
Set Blatt = Nothing
End Function
Gruß Gerd
Anzeige
AW: Letzte Zeile eines Arbeitsblattes
04.11.2022 07:24:58
GML
Vielen Dank an alle und die Lösungsvorschläge!
Das habe ich nicht bedacht (der entscheidende Satz ..):
Du produzierst eine Endlosschleife, da das Change-Event eine Funktion aufruft, die eine Zelle verändert, was wiederum das Change-Event aktiviert usw usw usw..
Ich werde die Anregungen umsetzen und die Funktion entsprechend umstellen.
LG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige