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.

[VBA] Zeilen unter Voraussetzung kopieren
#1
Hallo Zusammen  [Bild: cheesy.gif],

ich habe folgendes Problem:
Ich möchte gern über eine Schaltfläche alle Zeilen von Tabellenblatt1 auf Tabellenblatt2 kopieren wo in Spalte A ein "X" steht. Wird die Schaltfläche ein weiteres Mal betätigt, soll die gleiche Aktion erneut ausgeführt werden. Jedoch diesmal alle Werte darunter platziert werden.

Ich habe schon einiges an Code mir zusammenstückeln können:


Code:
Sub NurMitInhaltKopieren()
'Nur Zellen mit "X" in Spalte A auf anderes Blatt kopieren
  Dim lRowSrc As Long, fFreeDst As Long
  Dim lColSrc As Integer
  Dim wksSrc As Worksheet, wksDst As Worksheet
  Dim ZeSrc As Long, ZeDst As Long
  Dim rngZe As Range
     
  With ActiveWorkbook
     Set wksSrc = .Sheets("Tabelle1")
     Set wksDst = .Sheets("Tabelle2")
  End With
  With wksSrc
     lRowSrc = .Cells.Find(What:="*", SearchOrder:=xlByRows, _
      SearchDirection:=xlPrevious).Row
     lColSrc = .Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious).Column
  End With
  With wksDst
     If WorksheetFunction.CountA(.Cells) = 0 Then
        fFreeDst = 1
     Else
        fFreeDst = .Cells.Find(What:="*", SearchOrder:=xlByRows, _
         SearchDirection:=xlPrevious).Row + 1
     End If
  End With
  On Error GoTo ErrorHandler
  With wksSrc
     For ZeSrc = 1 To lRowSrc
        Set rngZe = .Range(.Cells(ZeSrc, 1), .Cells(ZeSrc, lColSrc))
        If WorksheetFunction.CountA(rngZe) > 0 Then
           rngZe.Copy wksDst.Cells(fFreeDst, 1)
           fFreeDst = fFreeDst + 1
        End If
     Next ZeSrc
  End With
ErrorHandler:
  If Err.Number <> 0 Then
     MsgBox "Fehler Nummer: " & Err.Number & vbCrLf _
      & "Fehler: " & Err.Description
  End If
End Sub

Jetzt habe ich das Problem, dass alle Zellen mit Inhalt kopiert werden und es nicht auf Spalte A "X" limitiert ist.


Könnte mir vielleicht einer von Euch erklären wie ich das ganze umzusetzen habe? Ich glaube es liegt am:


Code:
"What:="*"




welches ich durch eine Art:


Code:
If .Cells(Zeile, 1).Value = "X" Then




ersetzen müsste. Jedoch weiß ich leider nicht wie.  





Gruß



Muzel





PS:


Begonnen hatte ich mit:


Code:
Sub Copy()

Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long

With Tabelle1
ZeileMax = .UsedRange.Rows.Count
n = 1

For Zeile = 2 To ZeileMax

If .Cells(Zeile, 1).Value = "X" Then

.Rows(Zeile).Copy Destination:=Tabelle2.Rows(n)
n = n + 1

End If
Next Zeile
End With

End Sub




Jedoch fehlte hier die Funktionalität nur die Werte zu kopieren und diese untereinender einzufügen.
Antworten Top
#2
Moin! Also habe mich mal nur deinem ersten Versuch angenommen und dort noch ergänzt, dass der der Eintrag im Blatt 2 auch immer dynamisch nach unten wandert. VG


Code:
Sub Copy()

Dim Zeile As Long
Dim ZeileMax As Long
Dim zielzeile As Long


With Tabelle1
ZeileMax = .UsedRange.Rows.Count


zielzeile = Tabelle2.Cells(Tabelle2.Rows.Count, 1).End(xlUp).Row + 1
For Zeile = 2 To ZeileMax

If .Cells(Zeile, 1).Value = "X" Then

.Rows(Zeile).Copy Destination:=Tabelle2.Rows(zielzeile)
zielzeile = zielzeile + 1


End If
Next Zeile
End With

End Sub
Antworten Top


Gehe zu:


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