Clever-Excel-Forum

Normale Version: VBA Zeile in anderes Blatt kopieren wenn
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe VBA-ler,

Ich habe folgenden Code erfolgreich eingesetzt:

Sub Test()
 Sheets("Buttonpage").Range("A9:J9").Copy
 Sheets("Test").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
 Application.CutCopyMode = False
  End Sub

Jetzt würde ich ihn gern folgendermaßen ergänzen:
Wenn in der Auswahl (Range"A9:J9) das Wort "X" in Zelle "A9" ist, soll die gesamte Auswahl in Sheet "Test" eingefügt werden,
wenn in der Auswahl (Range"A9:J9) das Wort "Y" in Zelle "A9" ist, soll die gesamte Auswahl in Sheet "Test2" eingefügt werden,
und so weiter.

Könnte jemand weiterhelfen, um mich und meine bescheidenen VBA-Kenntnisse ein Stück weit nach vorne zu bringen?
Erklärungen dazu wären das absolute Sahnehäubchen :)

Vielen Dank im Voraus!
Don Ramses
Hallo Ramses,

Code:
Sub Test()
   Dim strWks As String
   
   With Sheets("Buttonpage")
       .Range("A9:J9").Copy
       Select Case .Cells(9, 1).Value: Case "X": strWks = "Sheet1": Case "Y": strWks = "Sheet2": End Select
   End With
   Sheets(strWks).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
End Sub
Hi Jonas,

danke für die schnelle Antwort. Habe es gerade mal ausprobiert, funktioniert perfekt. Jetzt werd ich mich mal dahinterklemmen um zu verstehen, wie du das gemacht hast ;)

Schöne Grüße,
Don Ramses
Hallo Jonas,

wenn Du schon Select Case in eine Zeile quetschst, ginge auch gleich sowas:

Code:
Sub Test1()
 Sheets(Switch(Sheets("Buttonpage").Cells(9, 1).Value = "X", "Sheet1", Sheets("Buttonpage").Cells(9, 1).Value = "Y", "Sheet2")).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 10).Value = Sheets("Buttonpage").Range("A9:J9").Value
End Sub

Gruß Uwe  :17:
Hi Uwe,

da hast Du wohl Recht, nette Lösung ;)
Hallo Kuwer,

habe gerade deinen Code ausprobiert, der aber nicht funktioniert bei mir (Index außerhalb des gültigen Bereichs).
Liegt es an mir oder könnte es sein, dass sich ein Fehler eingeschlichen hat?
In ersterem Fall würde ich wohl nicht umhin kommen, eine Beispielmappe zu erstellen.
Jonas' Code funktioniert, scheint aber enorme Rechenkraft zu ziehen.
Was bewirkt
Code:
.Resize(1, 10)

?

Danke und schöne Grüße,
Don Ramses
Es ist ein Laufzeitfehler 9, was (meines Wissens nach) auf Rechtschreibfehler oder falsche Benennung meinerseits hindeutet. Kontrolliere gerade.
Die Frage bzgl. "Resize" bleibt.

Schöne Grüße!
Hallöchen,

.Resize verändert die Bereichsgröße. Das kann z.B. die Programmierung vereinfachen, da man nur die linke obere Ecke eines Bereichs programmieren muss und selbigen dann mit .Resize wie gewünscht und ggf. variabel anpasst.
Hi André,

danke Dir! Traumhaft, so langsam beginnt sich mir ein Sinn zu erschließen ;)

Beste Grüße,
Don Ramses