Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

letzte Zeile mit AutoFilter

letzte Zeile mit AutoFilter
Jonathan
Hey,
wie kann ich per VBA die letzte Zeile ermitteln, wenn die Daten mit einem Filter selektiert wurden? Der Filter muss nicht gewählt sein - es müsste daher eine Lösung sein, die funktioniert, wenn ein Auto Filter gewählt wurde und wenn nicht.
Danke für Eure Hilfe!
LG

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: letzte Zeile mit AutoFilter
02.07.2011 21:23:07
Josef

Hallo Jonathan,
eine Möglichkeit.
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Sub test()
  'Aktives Tabellenblatt, Spalte 1
  MsgBox lastCell(ActiveSheet, 1)
End Sub


Function lastCell(ByRef sh As Worksheet, ByVal ColOrRow As Long, Optional ByVal LastRow As Boolean = True) As Long
  On Error GoTo ErrExit
  
  With sh
    If ColOrRow < 1 Or (LastRow And ColOrRow > .Rows.Count) Or _
      (Not LastRow And ColOrRow > .Columns.Count) Then Exit Function
    .Parent.CustomViews.Add "##TempView##", False, True
    If LastRow Then
      .Rows.Hidden = False
      If .AutoFilterMode Then If .FilterMode Then .ShowAllData
      If .Cells(.Rows.Count, ColOrRow) <> "" Then
        lastCell = .Rows.Count
      Else
        lastCell = .Cells(.Rows.Count, ColOrRow).End(xlUp).Row
      End If
    Else
      .Columns.Hidden = False
      If .Cells(ColOrRow, .Columns.Count) <> "" Then
        lastCell = .Columns.Count
      Else
        lastCell = .Cells(ColOrRow, .Columns.Count).End(xlToLeft).Column
      End If
    End If
    ErrExit:
    On Error Resume Next
    With .Parent.CustomViews("##TempView##")
      .Show
      .Delete
    End With
    On Error GoTo 0
  End With
End Function



« Gruß Sepp »

Anzeige
AW: letzte Zeile mit AutoFilter
03.07.2011 00:22:52
Jonathan
Hey,
danke für den Code. Leider wird mir bei der Zeile
With .Parent.CustomViews("##TempView##")
ein Fehler ausgegeben. Ich kann den Code nicht nachvollziehen und daher den Fehler nicht beheben.
LG
AW: letzte Zeile mit AutoFilter
03.07.2011 02:38:01
Jonathan
Mit
Worksheets("Daten").UsedRange.Rows.Count
wird mir bei allen bisherigen Tests ein richtiges Ergebnis geliefert. Da dein Code aber so umfangreich war, gehe ich davon aus, dass diese Variante nicht zuverlässig funktioniert?!
AW: letzte Zeile mit AutoFilter
03.07.2011 03:04:31
Jonathan
Was spricht gegen
Sub PruefenWerte()
Dim intCounter As Integer
intCounter = 1
Do Until Sheets("Daten").Cells(intCounter, 1).Value = ""
intCounter = intCounter + 1
If intCounter > 100000 Then
Exit Do
End If
Loop
MsgBox intCounter
End Sub

Anzeige
AW: letzte Zeile mit AutoFilter
03.07.2011 09:07:15
Josef

Hallo Jonathan,
zeig mal, wie du die Funktion aufrufst.
Zu .UsedRange : .UsedRange ist in diesem Zusammenhang wirklich unzuverlässig.
Zu Do - Loop : Da spricht der Zeitfaktor dagegen.

« Gruß Sepp »

Fehlermeldung
03.07.2011 13:26:54
Jonathan
Hey,
stimmt, die hatte ich ganz vergessen zu posten:
Laufzeitfehler 5
Ungültiger Prozeduraufruf oder ungültiges Argument
Was meinst du mit "aufrufen". Zum jetzigen Zeitpunkt habe ich die Funktion nur mit der Test-Sub aufgerufen und noch nirgends eingebunden.
VG
Anzeige
AW: Fehlermeldung
03.07.2011 13:57:15
Josef

Hallo Jonathan,
und warum zeigst du nicht deinen Code mit dem es zum Fehler kommt?
Ich kann beim besten Willen den Fehler nicht reproduzieren!

« Gruß Sepp »

AW: Fehlermeldung
04.07.2011 00:21:00
Jonathan
Hey,
es ist genau der selbe Code, den du gepostet hast. Ich habe keine Änderungen vorgenommen, um ihn vorerst kurz zu testen - dabei kam leider direkt die Fehlermeldung.
VG
Anzeige
AW: Fehlermeldung
06.07.2011 18:06:02
Reinhard
Hallo Jonathan,
lade eine mappe mit deinem Code hoch.
PS: @Erich, danke für die Info zu ## usw., konnte nix damit anfangen
Gruß
Reinhard
habe es anders gelöst...
07.07.2011 12:36:25
Jonathan
Vielen Dank für Eure Hilfe und Mühe, mir bei der Fehlersuche zu helfen. Die Mappe kann ich aus rechtichen Gründen nicht hochladen - in Anderen funktioniert der Code... Ich habe es jetzt anders gelöst (mit einer Schleife; Zeit des Durchlaufs hält sich in Grenzen).
Danke an alle!
AW: habe es anders gelöst...
07.07.2011 13:02:38
Rudi
Hallo,
max. 20 Durchläufe:
Function LastRow( _
wks As Worksheet, _
Optional lngFirstRow As Long, _
Optional lngLastRow As Long) _
As Long
'letzte Zeile mit Inhalt
Dim lngTmp As Long, blnFound As Boolean
With Application
If .CountA(wks.Rows(wks.Rows.Count)) Then
LastRow = wks.Rows.Count: Exit Function
End If
If .CountA(wks.Cells) = 0 Then
LastRow = 0: Exit Function
End If
If lngFirstRow = 0 Then lngFirstRow = 1
If lngLastRow = 0 Then lngLastRow = wks.Rows.Count
lngTmp = (lngFirstRow + lngLastRow) / 2
If lngLastRow > lngFirstRow + 1 Then
If .CountA(wks.Range(.Rows(lngTmp), .Rows(lngLastRow))) Then _
lngFirstRow = lngTmp: blnFound = True
If Not blnFound And .CountA(wks.Range(.Rows(lngFirstRow), .Rows(lngTmp))) Then _
lngLastRow = lngTmp
LastRow wks, lngFirstRow, lngLastRow
End If
End With
LastRow = lngFirstRow
End Function

Gruß
Rudi
Anzeige
AW: letzte Zeile mit AutoFilter
03.07.2011 03:46:23
Reinhard
Hallo Jonathan,
ich kann mit CustomViews.Add "##TempView##"
auch nix anfangen Aber Sepp schreibt das nicht ohne Grund *sicher bin*
Also wird das richtig sein oder er hat sich vertippselt aber glaub ich nicht, vertippseln bedeuet niemals sowas: ##TempView##
Ergo haben die doppelten Zeichen eine Bedeutung und "TempView" auch.
Welchen Sinn weiß ich nicht :-(
Wart's einfach ab, er oder andere werden das schon hinbiegen.
Wenn das nicht klappt so lade mal eine Mappe hoch, dann klappt's garantiert.
Gut's Nächtle
Reinhard
Fehlermeldung? Benutzerdef. Ansicht
03.07.2011 07:59:26
Erich
Hi zusammen,
ein CustomViewist nur eine benutzerdefinierte Ansicht.
Und "##TempView##" ist nur ein willlkürlich gewählter Name für eine solche Ansicht.
Sepp hätte sie asuch "fizzlipuzzli" nennen können. Das hat gar nichts zu bedeuten.
Bedeutend finde ich:
Da tritt ein Fehler auf, eine Fehlermeldung wird ausgegeben.
Das wird hier gepostet, auch die fehlerhafte Zeile.
Nicht gepostet hast du, Jonathan:
Welcher Fehler ist aufgetreten? Fehlernummer? Fehlerbeschreibung?
Wären diese Angaben nicht eventuell nützlich für die Erklärung/Behebung des Fehlers?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige