VBA Zeile in anderes Blatt kopieren wenn
#1
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
Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:
  • Don Ramses
Top
#3
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
Top
#4
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:
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Don Ramses
Top
#5
Hi Uwe,

da hast Du wohl Recht, nette Lösung ;)
Top
#6
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
Top
#7
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!
Top
#8
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Don Ramses
Top
#9
Hi André,

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

Beste Grüße,
Don Ramses
Top


Gehe zu:


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