433 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo. Ich habe ein Quelldatenblatt, in dem ich Zellen mit der Methode Cells( , ) ansprechen und deren Daten in ein Zieldatenblatt kopieren will. Ich mache das mit der Range Methode, also ohne Select, copy, paste.

Meine Herausforderung ist hier nur leider der Autofilter. Cells(1,1) bringe mir natürlich nicht den Wert der Zelle, die nach dem Setzen des Autofilters in Zeile1/ Spalte1 steht.

Hat jemand ne Idee, mit welcher Methode/ Prozedur ich das lösen kann?

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

wenn du nur gefilterte Zellen durchlaufen willst, dann kannst du das so machen:

[code]Sub Beispiel()

Dim rngC As Range

   For Each rngC In Range("A1:A100").Cells.SpecialCells(xlCellTypeVisible)
       MsgBox rngC.Value
   Next

End Sub[/code]
Bei dir könnte das dann vielleicht so aussehen:
[code]Sub Beispiel()

   Dim rngC As Range

   For Each rngC In Range("A1:A100").Cells.SpecialCells(xlCellTypeVisible)
      Worksheets("Tabelle2").Cells(rngC.Row, 1) = Cells(rngC.Row, 5)
   Next

End Sub[/code]
Gruß

M.O.
0 Punkte
Beantwortet von
Hi. inspiriert von Deinem letzten Beitrag habe ich das jetzt so gelöst

Dim zelle As Range
    Set zelle = intsortlist.Cells.Range("l5:l15000").SpecialCellsxlCellTypeVisible)
                
 intsortlist.Cells.Range("l5:l15000").SpecialCells(xlCellTypeVisible).Copy _ Destination:=stada.Cells(zeile2, spalte2)
0 Punkte
Beantwortet von
Hi.

Ich stehe leider eben vor dem nächsten Problem. Mit meiner Vorgehensweise zählt Excel solange die exakte Anzahl an Zeilen, solange die Zeilen im Bereich L5 bis L15000 genau der Reihe nach kommen.

Nehmen wir an, die Zeilen, die über den Autofilter gefiltert wurden sehen wie folgt aus:

Zeile   5
Zeile   6
Zeile 10
Zeile 11

Dann ist das Ergebnis nach der Zählung 2. Mit meiner Prozedur zählt VBA von Zeile 5 bis Zeile6. Die Zeilen 10 und 11, die ebenfalls zum sichtbaren Bereich gehören, werden nich mitgezählt.

Woran liegt das? Was mache ich falsch?
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

um welchen Code geht es denn? Poste doch mal den Code der nicht funktioniert.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi.

Der Code war:

Dim anzahl As Variant
anzahl = Sheets("tabelle1").Range("l5", Selection.End(xlDown)).SpecialCells(xlCellTypeVisible).Rows.Count

...oder zumindest so ähnlich. (Sorry, habe den alten Code bereits verworfen)

Da hat der Code aber nur bis zu einer bestimmten Zeile gezählt. Nämlich exakt alle zusammenhängenden Zeilen und mit dem zählen aufgehört.

Ich habe mein Problem jetzt mit der Subtotal - mehode gelöst und hat prima funktioniert. Der Code sieht jetzt wie folgt aus:

Dim anzpos2 As Variant
                intsortlist.Activate
                anzpos2 = Application.Subtotal(3, intsortlist.Cells.Range"l5:l15000"))

Das funktioniert prima.
...