Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeilen mit Kriterium per VBA kopieren
#11
habe eine "neue" datei angefügt - vielleicht ist es nun ersichtlicher wie das ganze aussehen soll.

danke allen heinzelmännchen und -frauen...

lg stephan

aufgezeichneter code??


Angehängte Dateien
.xlsm   Kriterienraster.xlsm (Größe: 25,65 KB / Downloads: 1)
Antworten Top
#12
Hallo,

unten Dein Code korrigiert:

Code:
Sub kopieren1()
   Dim variable As String
   variable = Sheets("Kriterienraster").Range("P1")
   With Sheets(variable).UsedRange
      .AutoFilter
      .AutoFilter Field:=9, Criteria1:="Ja"
      .Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy
   End With
   With Sheets("Kriterienraster")
      .Cells(.Rows.Count, 2).End(xlUp).Offset(1, -1).PasteSpecial xlPasteValues
   End With
   Sheets(variable).UsedRange.AutoFilter
End Sub

statt Criteria1 stand bei Dir [b]Criterial[/b]
Dann wird bei Dir der Bezug immer wieder vermischt.

So variable = [P1] wird der Wert aus der gerade aktiven Tabelle ausgelesen. Das kann dann schon zu Fehlern führen.

Diese Zeile:
Code:
Sheets("Kriterienraster").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
ist auch nicht eindeutig, falls die aktive Tabelle nicht "Kriterienraster" ist.

Dieser Teil:
Code:
Sheets("Kriterienraster").Cells(Rows.Count, 1)

bezieht sich auf "Kriterienraster"

Was dahinter kommt, bezieht sich auf das gerade aktive Blatt.

Vergleich Deinen mit dem von mir eingestellten, dann erkennst Du vielleicht auch einiges selber.

Hallo noch mal,

und so geht es ohne Filtern:

Code:
Sub kopieren()

Dim strgSheet As String
Dim Zeile As Long
Dim ZeileMax As Long
Dim lngErste As Long
Dim n As Long
With Sheets("Kriterienraster")
   strgSheet = .Range("P1")
   lngErste = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
End With

n = lngErste
With Sheets(strgSheet)
   ZeileMax = .UsedRange.Rows.Count
   For Zeile = 2 To ZeileMax
      If .Cells(Zeile, 9).Value = "Ja" Then
         .Rows(Zeile).Copy Destination:=Sheets("Kriterienraster").Rows(n)
         n = n + 1
      End If
   Next Zeile
End With

End Sub

Wenn es viele Daten sind, dann würde entweder mit dem Spezialfilter arbeiten oder Arrays einsetzen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • stephan gfeller
Antworten Top
#13
hallo atilla

mit dem von dir geposteten code funktioniert es perfekt...vielen dank und allen an dieser stelle nochmals vielen dank fürs mitdenken...

viele grüsse 
stephan
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste