HERBERS Excel-Forum - das Archiv
Zeilennummer für Filterergebnis ausgeben
Frank

Hallo Experten,
ich komme bei folgendem Problem nicht weiter.
Per VBA habe ich in einer Tabelle nach Spalte A gefiltert und dann in Spalte B den größten Wert ermittelt.
'filtern nach Hauptnummer
ActiveSheet.Range("$A$10:$N$10000").AutoFilter Field:=1, Criteria1:="=" & frmEingabe.txtHauptNr, _
Operator:=xlAnd
' NebenNr ermitteln und ausgeben.
frmEingabe.txtNebenNr = Application.Subtotal(4, Tabelle1.Range("B11:B10000"))
Nun möchte ich die Zeilennummer des ermittelten größten Wertes ausgeben.
Kann mir da jemand helfen?
Danke schon mal im Voraus!

AW: Zeilennummer für Filterergebnis ausgeben
Werner

Hallo Frank,
das sollte doch mit
frmEingabe.txtNebenNr = Application.Subtotal(4, Tabelle1.Range("B11:B10000")).Row
funktionieren.
Gruß Werner

AW: Zeilennummer für Filterergebnis ausgeben
Frank

Hallo Werner,
das habe ich schon probiert, da kommt diese Fehlermeldung:
Laufzeitfehler: 424
Objekt erforderlich
Danke für die Hilfe.

AW: Dann ofen o.w.T.
Werner

'SubTotal' liefert ja auch kein Objekt, sondern...
Luc:-?

…das, was die Container-Fkt Nr4 bereitstellt, Frank & Werner,
einen zellunabhängigen Ergebniswert. Der hat natürlich keine Eigenschaft .Row. So geht's also nicht! Aber so sollte es:
Dim wf As WorksheetFunction
Set wf = WorksheetFunction
With Tabelle1.Range("B11:B10000")
frmEingabe.txtNebenNr = wf.Match(wf.Subtotal(4, .Value), .Value, 0) + .Row - 1
End With
Set wf = Nothing
Gruß, Luc :-?
Besser informiert mit …

AW: 'SubTotal' liefert ja auch kein Objekt, sondern...
Frank

Hallo,
noch mal vielen Dank für die Hilfe.
Leider kam auch hier die Fehlermeldung.
Vielleicht liegt es ja auch an meiner Unfähigkeit.
Jetzt habe ich aber eine Schleife so lange "vergewaltigt" bis es funktioniert hat.
With Tabelle1.Range("b11:b10000")
Set rngCell = .Find(frmEingabe.txtNebenNr.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
Zeile = rngCell.Row
Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
'Else
End If
End With
frmEingabe.txtNebenNr = Zeile
Programiertechnisch ist es sicher nicht einwandfrei, aber es funktioniert.
Gruß und schönen Dank noch mal.
Frank

Zeilennummer für Filterergebnis ausgeben
Frank

Hallo Experten,
ich komme bei folgendem Problem nicht weiter.
Per VBA habe ich in einer Tabelle nach Spalte A gefiltert und dann in Spalte B den größten Wert ermittelt.
'filtern nach Hauptnummer
ActiveSheet.Range("$A$10:$N$10000").AutoFilter Field:=1, Criteria1:="=" & frmEingabe.txtHauptNr, _
Operator:=xlAnd
' NebenNr ermitteln und ausgeben.
frmEingabe.txtNebenNr = Application.Subtotal(4, Tabelle1.Range("B11:B10000"))
Nun möchte ich die Zeilennummer des ermittelten größten Wertes ausgeben.
Kann mir da jemand helfen?
Danke schon mal im Voraus!

AW: Zeilennummer für Filterergebnis ausgeben
Werner

Hallo Frank,
das sollte doch mit
frmEingabe.txtNebenNr = Application.Subtotal(4, Tabelle1.Range("B11:B10000")).Row
funktionieren.
Gruß Werner

AW: Zeilennummer für Filterergebnis ausgeben
Frank

Hallo Werner,
das habe ich schon probiert, da kommt diese Fehlermeldung:
Laufzeitfehler: 424
Objekt erforderlich
Danke für die Hilfe.

AW: Dann ofen o.w.T.
Werner

'SubTotal' liefert ja auch kein Objekt, sondern...
Luc:-?

…das, was die Container-Fkt Nr4 bereitstellt, Frank & Werner,
einen zellunabhängigen Ergebniswert. Der hat natürlich keine Eigenschaft .Row. So geht's also nicht! Aber so sollte es:
Dim wf As WorksheetFunction
Set wf = WorksheetFunction
With Tabelle1.Range("B11:B10000")
frmEingabe.txtNebenNr = wf.Match(wf.Subtotal(4, .Value), .Value, 0) + .Row - 1
End With
Set wf = Nothing
Gruß, Luc :-?
Besser informiert mit …

AW: 'SubTotal' liefert ja auch kein Objekt, sondern...
Frank

Hallo,
noch mal vielen Dank für die Hilfe.
Leider kam auch hier die Fehlermeldung.
Vielleicht liegt es ja auch an meiner Unfähigkeit.
Jetzt habe ich aber eine Schleife so lange "vergewaltigt" bis es funktioniert hat.
With Tabelle1.Range("b11:b10000")
Set rngCell = .Find(frmEingabe.txtNebenNr.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
Zeile = rngCell.Row
Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
'Else
End If
End With
frmEingabe.txtNebenNr = Zeile
Programiertechnisch ist es sicher nicht einwandfrei, aber es funktioniert.
Gruß und schönen Dank noch mal.
Frank

Bewerten Sie hier bitte das Excel-Portal