Der folgende Code wendet Filter an und wählt die obersten 10 Elemente in Spalte B aus, nachdem einige Filter auf die Tabelle angewendet wurden. Ich habe dies für viele verschiedene gefilterte Auswahl verwendet, aber ich stieß auf ein Problem mit einer meiner Filterkombinationen.VBA Auswählen von sichtbaren Zellen nach dem Filtern
Ich fand, dass, wenn es nur ein Element in der Spalte B nach dem Filtern gibt, es kopiert nicht die eine Zelle - stattdessen kopiert es die gesamte Zeile und scheint eine seltsame Auswahl zu sein.
Wenn ich manuell einen weiteren Eintrag zu diesem Filter hinzufügen (insgesamt 2), dann kopiert es es gut. Irgendwelche Ideen, warum dieser Code nicht funktioniert, wenn es nur einen Gegenstand gibt?
Sub top10()
Dim r As Range, rC As Range
Dim j As Long
'Drinks top 10
Worksheets("OLD_Master").Columns("A:H").Select
Selection.sort Key1:=Range("H1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Worksheets("OLD_Master").Range("A:H").AutoFilter Field:=4, Criteria1:=Array( _
"CMI*"), Operator:= _
xlFilterValues
Worksheets("OLD_Master").Range("A:H").AutoFilter Field:=5, Criteria1:="Drinks"
Set r = Nothing
Set rC = Nothing
j = 0
Set r = Range("B2", Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
For Each rC In r
j = j + 1
If j = 10 Or j = r.Count Then Exit For
Next rC
Range(r(1), rC).SpecialCells(xlCellTypeVisible).Copy
Worksheets("For Slides").Range("P29").PasteSpecial
Worksheets("OLD_Master").ShowAllData
End Sub
Sie verwenden einen 'PasteSpecial', aber wo tatsächlichen Sie tun Kopierens? – Wolfie
Wenn Sie "Spezialzellen" nur auf eine Zelle anwenden, gilt dies für den gesamten verwendeten Bereich des Blattes. Sie sollten die Zählung testen, bevor Sie sie verwenden. – Rory
@Wolfie Tut mir leid - ich habe mit "select" getestet anstatt zu kopieren. Ich habe es jetzt geändert – wra