VBA : Zellwerte kopieren in andere Zelle
#1
Hallo,

habe in den Zellen K70 bis K75 Werte, die ich  1.) im gleichen Tabellenblatt ( Blatt1) in die Zellen L70 bis L75 und gleichzeitig in ein zweites Tabellenblatt (Blatt2) in die Zellen K70 bis K75 kopieren möchte.

Kriege das im Tabellenblatt hin, nicht aber im Makro mit VBA.
Antworten Top
#2
Hi Zabulon,

bei deinen grundlegenden Fragen würde ich dir echt mal einen VBA-Kurs ans Herz legen!

Code:
Worksheets("Blatt1").Range("L70:L75") = Worksheets("Blatt1").Range("K70:K75")
Worksheets("Blatt2").Range("K70:K75") = Worksheets("Blatt1").Range("K70:K75")
kopiert nur die Werte

Code:
With Worksheets("Blatt1").Range("K70:K75")
    .Offset(, 1) = .Value
    Worksheets("Blatt2").Range("K70:K75") = .Value
End With
Exakt dasselbe wie eben, nur weniger Schreibarbeit.

Code:
Dim tmp As Variant
tmp = Worksheets("Blatt1").Range("K70:K75")
Worksheets("Blatt1").Range("L70:L75") = tmp
Worksheets("Blatt2").Range("K70:K75") = tmp
kopiert ebenfalls nur die Werte, ist aber schneller, da weniger Blattzugriffe stattfinden

Code:
Dim tmp As Variant
tmp = Worksheets("Blatt1").Range("K70:K75")
Worksheets("Blatt1").Range("L70").Resize(Ubound(tmp)) = tmp
Worksheets("Blatt2").Cells(70, "K").Resize(Ubound(tmp)) = tmp
im Grund dasselbe wie eben, aber flexibler, wenn sich die Größe des Quellbereichs ändert.

Code:
Worksheets("Blatt1").Range("K70:K75").Copy Worksheets("Blatt1").Range("L70:L75")
Worksheets("Blatt1").Range("K70:K75").Copy Worksheets("Blatt2").Range("K70:K75")
kopiert alles (auch Formeln)

Code:
Worksheets("Blatt1").Range("K70:K75").Copy
Worksheets("Blatt1").Range("L70:L75").PasteSpecial xlPasteValuesAndNumberFormats
Worksheets("Blatt2").Range("K70:K75").PasteSpecial xlPasteValuesAndNumberFormats
kopiert nur Werte und Zahlenformate

Und es gibt noch viel viel mehr Varianten um Werte zu kopieren.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • ex(c)el
Antworten Top
#3
Hallo Helmut,

zunächst mal Danke für Deine ausführliche Hilfe.

Seltsamerweise funktioniert das Kopieren in das gleiche Tabellenblatt, nicht aber in das andere Tabellenblatt. 

Ich muß dazu noch folgendes erklären. Bei den Werten in der Spalte K70 bis K75 handelt es sich um Werte, die ich mit der XVERWEIS-Funktion aus Werten in der Spalte I70 bis I75 nach Rang sortiert
habe. 
Und genau das scheint das Problem zu sein.

Wenn ich die Werte aus der I-Spalte mti Deinem Befehl kopiere, funktioniert das, aber eben nicht mit der K-Spalte, weil da in den Zellen eine Funktion steht.

Hast du eine Ahnung wieso das so ist und ob es eine Möglichkeit gibt, daß es trotzdem auch mit der K-Spalte klappt, denn die Werte müssen unbedingt sortiert in das andere Blatt kopiert werden.

Gruß Andreas
Antworten Top
#4
Welche der vielen Varianten hast du getestet?
Kennst du den Unterschied zwischen „Werte kopieren“ und „Formeln kopieren“?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#5
Nachtrag:

Ich hab es jetzt geschafft, indem ich die sechs Felder einzeln kopiert habe.

  Worksheets("Slot-Machine").Range("K70").Copy
    Worksheets("Slot-Machine").Range("L70").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("E30").PasteSpecial xlPasteValuesAndNumberFormats
   
    Worksheets("Slot-Machine").Range("K71").Copy
    Worksheets("Slot-Machine").Range("L71").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("F30").PasteSpecial xlPasteValuesAndNumberFormats
   
    Worksheets("Slot-Machine").Range("K72").Copy
    Worksheets("Slot-Machine").Range("L72").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("G30").PasteSpecial xlPasteValuesAndNumberFormats
   
    Worksheets("Slot-Machine").Range("K73").Copy
    Worksheets("Slot-Machine").Range("L73").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("H30").PasteSpecial xlPasteValuesAndNumberFormats
   
    Worksheets("Slot-Machine").Range("K74").Copy
    Worksheets("Slot-Machine").Range("L74").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("I30").PasteSpecial xlPasteValuesAndNumberFormats
     
    Worksheets("Slot-Machine").Range("K75").Copy
    Worksheets("Slot-Machine").Range("L75").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("J30").PasteSpecial xlPasteValuesAndNumberFormats


    Ich hab mich übrigens vertan. Die Werte sollen aus einer Spalte in eine Zeile geschrieben werden. 

   Wenn ich das Script so ausführe, blitzt der Monitor auf, während die Zahlen eingetragen werden. Gibt es auch einen Befehl, mit dem man Werte aus einer Spalte in eine Zeile eintragen kann?
Antworten Top
#6
Hallo Helmut,

ich hab es jetzt endlich, nach viel Tüftelei, geschafft.

Die Zahlen aus der Spalte hab ich im Excel-Tabellenblatt in eine Zeile kopiert  ( hätte ich auch früher drauf kommen können ! ) und dann mit folgenden Befehlen

    Worksheets("Slot-Machine").Range("N70:S70").Copy
    Worksheets("Slot-Machine").Range("N71:S71").PasteSpecial xlPasteValuesAndNumberFormats
    Worksheets("Berechnungen").Range("E30:J30").PasteSpecial xlPasteValuesAndNumberFormats
   
 dahin gebracht, wo sie hingehören.

 Nochmals tausend Dank für Deine umfangreiche Hilfe !

 Gruß Andreas
Antworten Top
#7
Hallo Andreas,

das Transponieren geht auch so, ohne den Zielbereich komplett angeben zu müssen:

Code:
    Worksheets("Slot-Machine").Range("N70:S70").Copy
    Worksheets("Slot-Machine").Range("N71").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
    Worksheets("Berechnungen").Range("E30").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True

Gruß Uwe
Antworten Top


Gehe zu:


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