Microsoft Excel

Herbers Excel/VBA-Archiv

ActiveSheet.Range Autofilter Criteria1

Betrifft: ActiveSheet.Range Autofilter Criteria1 von: Günter
Geschrieben am: 05.11.2014 14:29:26

Hallo,

Sheets("Tabelle1").Select
ActiveSheet.Range("$A$1:$C$8").AutoFilter Field:=3, Criteria1:="101"
Range("A1:C999").Select
Selection.Copy
Sheets("101").Select
ActiveSheet.Paste

ich selektiere aus einem Blatt die Sätze mit "101" heraus und kopiere diese Felder in das Tabellenblatt "101".
Wie kann ich das parametrisieren, dass auch die Kriterien 102 - 199 in die jeweiligen gleichlautenden Tabellenblätter kopiert werden.
Oder ist hier activeSheet.range der völlig falsche Ansatz???

  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Hajo_Zi
Geschrieben am: 05.11.2014 14:36:42

ich baue keine Datei nach.

Sub Kopieerstellen()
    Dim LoI As Long
    For LoI = 102 To 199
        With Sheets("Tabelle1")
            .Range("$A$1:$C$8").AutoFilter Field:=3, Criteria1:=LoI
            .Range("A1:C999").Copy Sheets(LoI).Range("A1")
        End With
    Next LoI
End Sub
Gruß Hajo


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Günter
Geschrieben am: 06.11.2014 07:27:37

Hallo Hajo,
vielen Dank für die schnelle Antwort.
Sieht gut aus, aber leider tritt ein weiterer Fehler auf:
"Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs"
Bei debuggen hängt er sich auf in der Zeile .range("A1:C999").copy sheets(LoI).Range("A1")

Gruß
Günter


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Hajo_Zi
Geschrieben am: 06.11.2014 07:35:12

Hallo Günter,

ich vermute mal die Tabelle aktuelle Tabelle LoI gibt es nicht.
Ich sehe meinen Code nicht.
davor vielleicht, was mir nicht gefällt
On Error Resume Next
und vor End Sub
On Error Goto 0

Gruß Hajo


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: hary
Geschrieben am: 06.11.2014 07:35:31

Moin
Wandel mal LoI in Text um.

.Range("A1:C999").Copy Sheets(CStr(LoI)).Range("A1")

gruss hary


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Günter
Geschrieben am: 06.11.2014 08:04:08

Hallo Hary,
danke für den Tipp.
War wohl Gedankenübertragung :-)
Auf die Idee bin ich gerade selbst gekommen.
Funktioniert fast...

Sub blatt_kopieren()
    Dim LoI As Long
    For LoI = 101 To 199
        With Sheets("Tabelle1")
            .Range("$A$2:$C$999").AutoFilter Field:=3, Criteria1:=LoI
            .Range("A2:C999").Copy Sheets(CStr(LoI)).Range("A2")
        End With
    Next LoI
End Sub
Aber er hängt sich auf, wenn loi kleiner als 199 ist.
Wenn ich loi = 101 to 106 setze, funktioniert es.
Wie sähe die Anweisung aus, wenn loi kein numerischer Wert ist, sondern ein string.
FOR LOI = ??? to ???

Sorry, bin in Sachen VBA noch ziemlich blank

Gruß
Günter


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: hary
Geschrieben am: 06.11.2014 09:45:18

Moin
Versteh ich dich richtig, das Filterkriterium sind die Blattnamen?

Dim wks As Worksheet
With Worksheets("Tabelle1").Range("$A$2:$C$999")
 For Each wks In Worksheets
   If wks.Name <> "Tabelle1" Then
     If Worksheets("Tabelle1").AutoFilterMode = True Then Worksheets("Tabelle1").ShowAllData
        .AutoFilter Field:=3, Criteria1:=wks.Name
        .Copy wks.Range("A2")
   End If
 Next
  .AutoFilter
End With

gruss hary


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Günter
Geschrieben am: 10.11.2014 11:17:10

Hallo hary,
jo richtig....
Zuerst lese ich die Spalte 3 aus und erstelle leere Blätter mit Namen Zelle=worksheet.

Dann möchte ich die in Spalte 3 gefilterten Zeilen in die neu angelegten worksheets kopieren.

Jetzt bekomme ich den Fehler:
Laufzeitfehler 1004
Die ShowAllData-Methode des worksheet-Objektes konnte nicht aufgeführt werden.


  

Betrifft: AW: ActiveSheet.Range Autofilter Criteria1 von: Günter
Geschrieben am: 10.11.2014 13:22:44

habe jetzt ein "On Error Resume Next" eingefügt und das Makro funktioniert.
Nur: Ich bin neugierig und möchte wissen, warum es vorher NICHT funktioniert hat.
Wahrscheinlich "hängt" er sich an der ersten Zeile (Überschrift) auf, weil dort in field 3 das Kriterium wks.name nicht erfüllt ist. Oder liege ich da falsch.
Sorry für die dumme Frage, aber von Fehler zu Fehler lerne ich dazu...hoffentlich...


 

Beiträge aus den Excel-Beispielen zum Thema "ActiveSheet.Range Autofilter Criteria1"