Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

LastCell funktioniert nur bis Zeile 32767

LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:06:43
Markus
Hallo,
beiliegendes Makro ist sehr hilfreich und springt zur letzten beschriebenen Zelle.
In grossen Tabellen mit mehr als 32767 Zeilen funktioniert es nicht mehr - Schade !
Alle Versuche bei den Variablen auf Long oder (As Long) zu ändern,
funktionieren nicht, bzw. wahrscheinlich schreibe ich die falsche Syntax.
Wer weiss hier Rat, damit dieses Makro auch zur Zelle I65000 springt,
sofern diese beschrieben ist.
Jetzt schon besten Dank für eine Antwort
Markus

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:07:29
Markus
Hier noch das Makro.

Function RealLastCell(TheSheet As Worksheet) As Range
' springt zur letzten beschriebenen Zelle
' wobei nur Formeln, Zahlen und Characters gelten
' Reine Formatierungen werden nicht berücksichtigt
'  Quelle von www.herber.de
Dim ExcelLastCell As Range
Dim Row%, Col%, LastRowWithData%, LastColWithData%
Application.ScreenUpdating = False
Set ExcelLastCell = TheSheet.Cells.SpecialCells(xlLastCell)
LastRowWithData = ExcelLastCell.Row
Row = ExcelLastCell.Row
Do While Application.CountA(TheSheet.Rows(Row)) = 0 And Row  1
Row = Row - 1
Loop
LastRowWithData = Row
LastColWithData = ExcelLastCell.Column
Col = ExcelLastCell.Column
Do While Application.CountA(TheSheet.Columns(Col)) = 0 And Col  1
Col = Col - 1
Loop
LastColWithData = Col
Application.ScreenUpdating = True
Set RealLastCell = TheSheet.Cells(Row, Col)
End Function


Anzeige
AW: LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:27:06
Franc
Und der Grund ist, das % für Integer = Werte von -32.768 bis 32.767 steht.
& = Long = -2.147.483.648 bis 2.147.483.647 (also ausreichend für die 65536 Zeilen ^^)

AW: LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:27:50
mpb
Hallo Markus,
versuch's mit
Dim ExcelLastCell As Range
Dim Col%, LastColWithData%
Dim LastRowWithData As Long
Dim row As Long
Gruß
Martin

AW: LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:38:00
fcs
Hallo Markus,
mit folgender Deklaration funktionierts unter Excel97 bis zur letzten Zeile (65536)

Dim Row As Long, Col As Long, LastRowWithData As Long, LastColWithData As Long


Die nachfolgende Variante der Function ist wesentlich schneller, wenn in der Tabelle viele Zeilen formatiert aber ohne Daten sind.
Gruß
Franz


Function RealLastCell(TheSheet As Worksheet) As Range
' springt zur letzten beschriebenen Zelle
' wobei nur Formeln, Zahlen und Characters gelten
' Reine Formatierungen werden nicht berücksichtigt
'  Quelle von www.herber.de
Dim ExcelLastCell As Range
Dim Row As Long, Col As Long, LastRowWithData As Long, LastColWithData As Long
Application.ScreenUpdating = False
Set ExcelLastCell = TheSheet.Cells.SpecialCells(xlLastCell)
LastColWithData = ExcelLastCell.Column
Col = ExcelLastCell.Column
Do While Application.CountA(TheSheet.Columns(Col)) = 0 And Col  1
Col = Col - 1
Loop
LastColWithData = Col
LastRowWithData = 1
With TheSheet
For Col = 1 To LastColWithData
Row = .Cells(.Rows.Count, Col).End(xlUp).Row
If Row > LastRowWithData Then LastRowWithData = Row
Next
End With
Application.ScreenUpdating = True
Set RealLastCell = TheSheet.Cells(LastRowWithData, LastColWithData)
End Function


Anzeige
AW: LastCell funktioniert nur bis Zeile 32767
25.02.2008 12:22:06
Rudi
Hallo,
so geht's:

Function RealLastCell(TheSheet As Worksheet) As Range
' springt zur letzten beschriebenen Zelle
' wobei nur Formeln, Zahlen und Characters gelten
' Reine Formatierungen werden nicht berücksichtigt
'  Quelle von www.herber.de
Dim ExcelLastCell As Range
Dim lngRow As Long, lngCol As Long, LastRowWithData As Long, LastColWithData As Long
Application.ScreenUpdating = False
Set ExcelLastCell = TheSheet.Cells.SpecialCells(xlLastCell)
LastRowWithData = ExcelLastCell.Row
lngRow = ExcelLastCell.Row
Do While Application.CountA(TheSheet.Rows(lngRow)) = 0 And lngRow  1
lngRow = lngRow - 1
Loop
LastRowWithData = lngRow
LastColWithData = ExcelLastCell.Column
lngCol = ExcelLastCell.Column
Do While Application.CountA(TheSheet.Columns(lngCol)) = 0 And lngCol  1
lngCol = lngCol - 1
Loop
LastColWithData = lngCol
Application.ScreenUpdating = True
Set RealLastCell = TheSheet.Cells(lngRow, lngCol)
End Function


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

Anzeige
Nachfrage
25.02.2008 12:30:00
mpb
Hallo Rudi,
wie wäre denn der korrekte Aufruf der UDF, z.B. für Tabelle2?
Gruß
Martin

AW: Nachfrage
25.02.2008 12:37:35
Rudi
Hallo,

Sub tt()
MsgBox RealLastCell(Sheets("Tabelle2")).Address
End Sub


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

AW: Nachfrage
25.02.2008 12:49:00
mpb
Hallo Rudi,
im Eröffnungspost hieß es, dass die UDF in die letzte Zelle springt, das kam mir schon sehr merkwürdig vor.
Wenn ich es jetzt richtig verstehe, wird die UDF immer über ein Makro aufgerufen, sie gibt ja auch keinen Wert zurück. Oder habe ich jetzt noch etwas übersehen? Danke für die Erläuterungen.
Gruß
Martin

Anzeige
AW: Nachfrage
25.02.2008 13:27:00
Markus
Hallo und besten Dank an Alle!
natürlich habe ich vergessen, das aufrufende Makro mitzuliefern.
Ich benutzte RealLatCell in einem Add-In.
jetzt funktionierts bestens, und ich kann in meinen grossen Tabellen herumspringen.
Danke
Markus

Sub LetzteZelle()
' ruft die die entsprechende Funktion auf
' springt zur Letzten Zelle
' berücksichtigt nicht Kommentare und Formatierungen
RealLastCell(ActiveSheet).Select
End Sub


299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige