HERBERS Excel-Forum - das Archiv

Thema: VBA 2 Spalten Kopieren

VBA 2 Spalten Kopieren
Marco77
Hallo zusammen,

ich hätte eine Frage zu einem Makro, ich möchte aus einer Tabelle (Dispoliste) den Wert "03" Herausfiltern und 2 Spalten dieser in ein neues Blatt mit dem Namen 03 einfügen. In Spalte 1 des Dispolistenblattes stehen von 01 - 13 unterschiedliche werte, es soll mir die werte 03 herausfiltern und in Blatt 03 die Spalten F und G einfügen.

Ich hab folgenden Code gefunden der fast funktioniert, nur leider kopiert er die kompletten Spalten und nicht nur die F & G, ich bin relativ neu in VBA hab vieles versucht, schaffe aber nur alle Spalten. Wie müsste der Code verändert werden, das nur die Spalten F und G kopiert werden.

Vielen vielen Dank im voraus für die Hilfe.
Grüße
Marco

Hier der COde:



Sub Copy_03()
Dim i As Long, suchCol As Long
Dim strSearch As String
Dim srcWks As Worksheet, tarWks As Worksheet
Set srcWks = Worksheets("Dispoliste")
Set tarWks = Worksheets("03")
suchCol = 1
strSearch = "03"
With srcWks
For i = 1 To .Cells(Rows.Count, suchCol).End(xlUp).Row
If .Cells(i, suchCol).Text = strSearch Then
Rows(i).Copy Destination:=tarWks.Cells(tarWks.Cells(Rows.Count, 1).End(xlUp). _
Row + 1, 1)
End If
Next i
End With
End Sub
AW: VBA 2 Spalten Kopieren
GerdL
Hallo Marco,

inetwa so:
Cells(i, "F").Resize(1, 2).Copy Destination:=tarWks.Cells(tarWks.Cells(Rows.Count, 1).End(xlUp)).Offset(1, 0)

Gruß Gerd
AW: VBA 2 Spalten Kopieren
Marco77
Guten Morgen Gerd,

erstmal Danke für die Antwort, wenn ich den Code:

Rows(i).Copy Destination:=tarWks.Cells(tarWks.Cells(Rows.Count, 1).End(xlUp). _
Row + 1, 1)

durch den

Cells(i, "F").Resize(1, 2).Copy Destination:=tarWks.Cells(tarWks.Cells(Rows.Count, 1).End(xlUp)).Offset(1, 0)

von dir ersetzte, bekomme ich einen Laufzeitfehler `1004`: Anwendungs- oder objektdefinierter Fehler und er markiert beim Debuggen die neu eingefügte Zeile Geld.

Ich weiss auch nicht genau ob es richtig war, deine Codezeile mit meiner zu tauschen.

Danke im voraus für die Hilfe
Grüße
Marco
AW: VBA 2 Spalten Kopieren
GerdL
upps, besser so:
Cells(i, "F").Resize(1, 2).Copy Destination:=tarWks.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

Gruß Gerd
AW: VBA 2 Spalten Kopieren
Marco77
Danke Gerd, funktioniert super !!!
Wenn ich das nun um einen Begriff erweitern möchte irgendwann, also nicht erst 03 in ein blatt 03 und dann 04 in ein neues blatt 04 kopieren möchte, ist das schwer umzusetzen ? Oder wäre das beliebig erweiterbar ?

Sorry für die vielen Fragen, ich lerne jeden Tag ein bisschen dazu

Nochmals Vielen Dank
Grüße
Marco
AW: VBA 2 Spalten Kopieren
GerdL
Aller Laster Anfang ist schwer. :-)

Schwer, nein. Erweiterbar, ja. Beliebig erweiterbar, bedingt.
Ein paar Beispiele ansatzweise:

strSearch = "03"
strSearch2 = "04"
With srcWks
For i = 1 To .Cells(Rows.Count, suchCol).End(xlUp).Row
If .Cells(i, suchCol).Text = strSearch Or .Cells(i, suchCol).Text = strSearch2 Then
'..................

oder
Dim vntSearch As Variant. a As Integer
vntSearch= Array("03","04","05")
With srcWks
For i = 1 To .Cells(Rows.Count, suchCol).End(xlUp).Row
For a = Lbound(vntSearch to UBound(vntsearch)
If .Cells(i, suchCol).Text = vntSearch(a) Then
'....................
Next a
Next i

oder bei Zahlenwerten
Dim b As Integer
With srcWks
For i = 1 To .Cells(Rows.Count, suchCol).End(xlUp).Row
For b = 3 To 5
If .Cells(i, suchCol).Text = Format(b,"=00") Then
'.....................
Next b
Next i

Gruß Gerd