Collapse column

Autor Thema: Letzte belegte Zelle mit VBA  (Gelesen 6279 mal)

Offline Herbert Grom

  • Jr. Member
  • **
  • Beiträge: 76
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2013
Letzte belegte Zelle mit VBA
« 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
Servus

#Bitte Antwort nicht vergessen! ;o)=)

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw: Letzte belegte Zelle mit VBA
« Antwort #1 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ß :-)
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline Herbert Grom

  • Jr. Member
  • **
  • Beiträge: 76
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2013
Antw: Letzte belegte Zelle mit VBA
« Antwort #2 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
Servus

#Bitte Antwort nicht vergessen! ;o)=)

Offline Herbert Grom

  • Jr. Member
  • **
  • Beiträge: 76
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2013
Antw: Letzte belegte Zelle mit VBA
« Antwort #3 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
Servus

#Bitte Antwort nicht vergessen! ;o)=)

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.