Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Find-Befehl/gefilterte Daten

Find-Befehl/gefilterte Daten
05.06.2008 13:39:00
Petra
Schönen Nachmittag an alle

Sub tt()
Dim a
With Sheets("Tabelle1")
a = .Cells.Find("4711", [A1], , , xlByRows, xlPrevious).Row
End With
End Sub


dieses Codeschnipsel funktioniert,
nur, wenn ich die Tabelle filtere (4711 wird rausgefiltert, nicht angezeigt) kommt es zum
Laufzeitfehler 91 , - Objektvariable oder With-Blockvariable nicht festgelegt -
Was ist zu tun, damit es auch bei gefilterter Liste funktioniert?
Liebe Grüße Petra

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find-Befehl/gefilterte Daten
05.06.2008 13:55:00
Chris
servus Petra,
so:

Sub tt()
Dim a
With Sheets("Tabelle3")
If Not .Cells.Find("4711", [A1], , , xlByRows, xlPrevious) Is Nothing Then
a = .Cells.Find("4711", [A1], , , xlByRows, xlPrevious).Row
Else
Exit Sub
End If
End With
'MsgBox a
End Sub


Gruß
Chris

AW: Find-Befehl/gefilterte Daten
05.06.2008 14:00:57
Petra
Servus Chris
das wars wohl nicht,
in meinem Beispiel gibt es ja die 4711, ist jedoch durch Filterung nicht angezeigt. Trotzdem brauche ich die Zeilennummer der 4711!
Wer hat einen brauchbaren Tipp?
Grüße Petra

AW: Anmerkung!
05.06.2008 14:02:48
Chris
Servus Petra,
jetzt bringt der Code nur keine Fehlermeldung mehr, allerdings werden die gefilterten Zeilen so trotzdem nicht gefunden. D.h.: a = 0
Gruß
chris

Anzeige
AW: Anmerkung!
05.06.2008 14:06:00
Petra
Hallo Chris
ich hab nicht nach der Fehlerunterdrückung gefragt!
Mein Problem ist, eine bestimmte Zeilennummer zu finden, auch wenn diese ausgeblendet (durch Filter) ist.
Ich warte sehnsüchtig nach dem richtigen Tipp!
Liebe Grüße Petra

AW: Anmerkung!
05.06.2008 14:18:00
Chris
Servus Petra,
da fällt mir nur das ein (mit einer Schleife durchlaufen), wenn kein Treffer:

Sub tt()
Dim a, lastRow, i
With Sheets("Tabelle3")
If Not .Cells.Find("4711", [A1], , , xlByRows, xlPrevious) Is Nothing Then
a = .Cells.Find("4711", [A1], , , xlByRows, xlPrevious).Row
Else
lastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To lastRow
If .Cells(i, 1).EntireRow.Hidden = True Then
a = .Cells(i, 1).Row
Exit For
End If
Next i
End If
End With
MsgBox a
End Sub


Gruß
Chris

Anzeige
AW: Anmerkung!
05.06.2008 14:28:47
Petra
Hallo Chris
das funktioniert leider nicht!
Was Du machst, ist die erste ausgeblendete (gefilterte) Zeilennummer auszugeben! Das war aber nicht meine Fragestellung.
Ich warte weiter auf den richtigen Tipp!
Grüße Petra

AW: Anmerkung!
05.06.2008 15:42:23
Nepumuk
Hallo Petra,
versuch es mal so:
Public Sub Beispiel()
    Dim vntArray As Variant
    Dim lngRow As Long
    vntArray = Tabelle1.Columns(1).Value2
    For lngRow = LBound(vntArray) To UBound(vntArray)
        If vntArray(lngRow, 1) = 4711 Then
            MsgBox lngRow
            Exit For
        End If
    Next
End Sub

Gruß
Nepumuk

Anzeige
AW: Anmerkung!
05.06.2008 16:36:59
Petra
Hallo Nepumuk
Deine Lösung ist Spitze, vielen Dank dafür!
Schönen Tag noch und liebe Grüße
Petra

AW: Sorry mal...
05.06.2008 14:38:00
Chris
... aber dein Code-Schnipsel findet genau eine Zeile in der 4711 steht und zwar die erste von unten. Was willst du überhaupt erreichen?
Willst du alle Zeilen finden, die gefiltert sind, oder was?
Wenn man natürlich etwas erklärungsfaul ist, dann ist klar dass es zu Missverständnissen kommt.
Also beschreib einfach genau, was du willst, dann bekommst du auch eine einwandfrei funktionierende Lösung.
Gruß
Chris

Anzeige
AW: Sorry mal...
05.06.2008 14:50:41
Petra
Hallo Chris
hier mal eine kleine Beispieldatei

Die Datei https://www.herber.de/bbs/user/52850.xls wurde aus Datenschutzgründen gelöscht


vielleicht wirds Dir jetzt klarer!
Grüße Petra

AW: Sorry mal...
05.06.2008 15:29:00
Chris
Servus Petra,
hier die beiden finden 4711 aber nur jeweils den ersten Eintrag von oben oder von unten:

Sub tt3() ' von oben, aber immer nur die erste
Dim a, lastRow, i
With Sheets("Tabelle1")
If Not .Range("A:A").Find("4711", [A1], , , xlByRows, xlPrevious) Is Nothing Then
a = .Range("A:A").Find("4711", [A1], , , xlByRows, xlPrevious).Row
Else
lastRow = .Range("A65536").End(xlUp).Row
For i = 2 To lastRow
If .Cells(i, 1).EntireRow.Hidden = True And .Cells(i, 1).Value = "4711" Then
a = .Cells(i, 1).Row
Exit For
End If
Next i
End If
End With
MsgBox a
End Sub



Sub tt4() ' von unten, aber immer nur die erste
Dim a, lastRow, i
With Sheets("Tabelle1")
If Not .Range("A:A").Find("4711", [A1], , , xlByRows, xlPrevious) Is Nothing Then
a = .Range("A:A").Find("4711", [A1], , , xlByRows, xlPrevious).Row
Else
lastRow = .Range("A65536").End(xlUp).Row
For i = lastRow To 2 Step -1
If .Cells(i, 1).EntireRow.Hidden = True And .Cells(i, 1).Value = "4711" Then
a = .Cells(i, 1).Row
Exit For
End If
Next i
End If
End With
MsgBox a
End Sub


wenn du alle Einträge haben willst, dann musst du alle in einen Array einlesen, aber da gibt es den ein oder anderen Schönheitsfehler, der noch behoben werden muss.
Gruß
Chris

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige