Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Herbert Grom am Februar 12, 2012, 15:31:46 Nachmittag

Titel: Letzte belegte Zelle mit VBA
Beitrag von: Herbert Grom am Februar 12, 2012, 15:31:46 Nachmittag
Hallo,

in einer Spalte habe ich in den Zellen von Zeile 4 - 53 Formeln stehen, die, je nach Bedingung einen Wert anzeigen, oder eben nichts mit "". Immer eine Zeile nach der anderen. Nun will ich per VBA die Zeile ermitteln, in der der letzte sichtbare Wert steht. Mit "iLastRow = Cells(Rows.Count, 1).End(xlUp).Row" wird mir nur die Zeile mit der letzten Formel angezeigt = 53. Ich stehe irgendwie auf dem Schlauch. Könnt Ihr mir bitte die Lösung sagen? Dafür vielen Dank im Voraus.

Servus
Titel: Antw: Letzte belegte Zelle mit VBA
Beitrag von: maninweb am Februar 12, 2012, 16:58:38 Nachmittag
Hallo Herbert...

könntest es mit dieser Funktion versuchen, die dann rückwärts ab der letzten Zeile solange
sucht, bis ein Wert mit einer Länge > 0 gefunden wird....
Code: Visual Basic
  1. Public Function SearchLastRow(SearchSheet As String, _
  2.                                 SearchColumn As Long) As Long
  3.  
  4.     Dim lngIndex As Long
  5.     Dim lngLast  As Long
  6.    
  7. '   With...
  8.    
  9.     With ThisWorkbook.Worksheets(SearchSheet)
  10.      
  11. '     Letzte Zeile...
  12.      
  13.       lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row
  14.      
  15. '     Prüfen...
  16.      
  17.       If lngLast > 1 Then
  18.      
  19. '       Rückwärts suchen...
  20.        
  21.         For lngIndex = lngLast - 1 To 1 Step -1
  22.          
  23.           If Len(.Cells(lngIndex, SearchColumn).Value) > 0 Then
  24.            
  25.             lngLast = lngIndex
  26.            
  27.             Exit For
  28.          
  29.           End If
  30.          
  31.         Next lngIndex
  32.      
  33.       End If
  34.    
  35.     End With
  36.    
  37. '   Ergebnis...
  38.    
  39.     SearchLastRow = lngLast
  40.    
  41.   End Function
  42.  
Auruf dann z.B. über SearchLastRow "Tabelle1", 1 wo dann der Tabellenname und die
zu durchsuchende Spalte (im Beispiel = 1 = Spalte A) angegeben werden kann.

Gruß :-)
Titel: Antw: Letzte belegte Zelle mit VBA
Beitrag von: Herbert Grom am Februar 12, 2012, 18:14:38 Nachmittag
Hallo maninweb,

vielen Dank für Deinen Tipp. Doch dafür gleich eine UDF zu verwenden ist mir zu umständlich. Gibt es dafür keine einfachere Lösung?

Servus
Titel: Antw: Letzte belegte Zelle mit VBA
Beitrag von: Herbert Grom am Februar 12, 2012, 18:29:20 Nachmittag
Hallo,

wen es interessiert, ich habe eine Lösung bekommen! Sie lautet:

Dim lngLetzte
lngLetzte = [=LOOKUP(2,1/(Tabelle1!A:A<>""),ROW(A:A))]

Und wenn man dann so wie bei mir, Zeilen ausgeblendet hat, kann man den Bereich von "Tabelle1!A:A<>""),ROW(A:A)" auf "Tabelle1!A1:A48<>""),ROW(A1:A48)" eingrenzen.

Danke an Tino!

Servus