PDA

Vollständige Version anzeigen : Excel bereich aktualisieren


Luka$
09.03.2009, 21:51
Hallo, ich versuche die letzte "beschriebene" Zeile in meinem Sheet zu finden. Dies mache ich folgendermaßen


Sheets("individueller Filter").Cells(1, 2).SpecialCells(xlLastCell).Row


Lösche ich nun allerdings ein paar Zeilen gibt mir die Funktion immernoch den alten Wert zurück, als wären die Zeilen nicht gelöscht worden. Gibt es eine möglichkeit den angesprochenen Bereich zu aktualisieren.


Danke Luka$

Sebastian Schulz
09.03.2009, 22:01
Hallo Lukas,

probiere es mal mit

Sheets("individueller Filter").Cells(Rows.Count, 1).End(xlUp).Row

aus.

jinx
10.03.2009, 03:52
Moin, Luk$,

bei Deiner verwendeten Methode entweder Speichern der Mappe (dann wird der angepasste Bereich verwendet), Aktualisieren der Funktion (Code liefere ich gerne bei Bedarf nach), Verwenden des von Sebastian gemachten Vorschlages (für eingeblendete Zeilen) oder die Verwendung von Find für ausgeblendete Zeilen:

Debug.Print Range("A1:A" & Rows.Count).Find("*", Range("A1"), , , , xlPrevious).Row

Luka$
10.03.2009, 14:13
Also die Funktionen funktionieren, allerdings muss dafür ja die durchsuchte Spalte fest angegeben werden. Das ist in meinem Fall sehr umständlich.

Bei der Strg + Ende Methode wird ja die letzte Spalte sowie zeile angegeben. Ich habe also wie bei jinx beschrieben die Mappe zu speichern und dadruch den Bereich zu aktualisieren. Dies funktioniert leider nicht. Du wolltest ja noch einen Code zum aktualisieren der Funktion angeben. Wäre nett wenn du das noch machen würdest

Mfg
Luka$

jinx
10.03.2009, 16:02
Moin, Luka$,

aus Excel2007 VBA Programmer´s Reference:

Sub GetRealLastCell()
Dim lRealLastRow As Long
Dim lRealLastColumn As Long

'Get bottom right corner of cells with data
Range("A1").Select

On Error Resume Next
lRealLastRow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, _
xlPrevious).Row
lRealLastColumn = Cells.Find("*", Range("A1"), xlFormulas, , _
xlByColumns, xlPrevious).Column

Cells(lRealLastRow, lRealLastColumn).Select

End Sub
Und die Anpassung von SpecialCells:

Sub DeleteUnusedFormats()
Dim lLastRow As Long, lLastColumn As Long
Dim lRealLastRow As Long, lRealLastColumn As Long

'Delete from used range rows & columns that have no data

'Detect end of used range including empty formatted cells
With Range("A1").SpecialCells(xlCellTypeLastCell)
lLastRow = .Row
lLastColumn = .Column
End With

'Find end of cells with data
lRealLastRow = _
Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row

lRealLastColumn = _
Cells.Find("*", Range("A1"), xlFormulas, , _
xlByColumns, xlPrevious).Column

'If used range exceeds data, delete unused rows & columns
If lRealLastRow < lLastRow Then
Range(Cells(lRealLastRow + 1, 1), Cells(lLastRow, 1)).EntireRow.Delete
End If

If lRealLastColumn < lLastColumn Then
Range(Cells(1, lRealLastColumn + 1), _
Cells(1, lLastColumn)).EntireColumn.Delete
End If

ActiveSheet.UsedRange 'Resets LastCell

End Sub