Hi Alex
Etwa so soll funktionieren
Private Sub ComboBox1_Change()
Select Case True
Case ComboBox1.Text = "January"
Worksheets("DA CCH").Range("B5:E8").Copy
Worksheets("DA CCH").Range("B25").PasteSpecial Paste:=xlPasteValues
Worksheets("DA CCH").Range("BC5:BF8").Copy
Worksheets("DA CCH").Range("H25").PasteSpecial Paste:=xlPasteValues
End Select
End Sub
In Deine Code,
Worksheets("DA CCH").Range("B5:E8").Copy Destination:=Worksheets("DA CCH").Range("B25")
Worksheets("DA CCH").Range("BC5:BF8").Copy Destination:=Worksheets("DA CCH").Range("H25")
bemützt Du eigentlich diese Methode:
___ Copy___ Destination:=___
(___ Destination:= ___ darfst Du einfach auslassen so wie Du hast ) . Diese ist eine etwa schneller Methode wobei, ( Ich denke) VBA macht eine Umweg um die Zwischenablage und „ratest“ die Format um zu passen. Mal Funktionieret wie Du Willst, mal nicht! ( Mal kopieret Formulare, mal Werte
http://www.mrexcel.com/forum/excel-q...-formulas.html
)
Mit Diesen Methode:
___ Copy
___ PasteSpecial __Paste:=xl____
Kannst Du auswählen welcher Versionen von die kopierte Datei in die Zwischenablage sie einfügen. Also Du hast mehr Kontroller
http://www.mrexcel.com/forum/excel-q...ml#post4071766
Gruß aus Hof
Alan
Bayern
Übrigens ich wurde es Ubers Arrays ( Feld Elementen ) machen
Sub AlexArrayMethodeCopyPasteValues() 'http://www.excelforum.com/non-english-excel/1107641-wie-paste-special-in-vba-code-einbauen.html
Dim arrIn1() As Variant, arrIn2() As Variant 'Diesen sind dynamischer Arrays, so wie wir brauchen um die .Value Methode zu anwenden um es in eine Code Line füllen zu können. Variant muss benutz werden…..
Select Case True
Case ComboBox1.Text = "January"
Let arrIn1() = Worksheets("DA CCH").Range("B5:E8").Value '.....Die .Value Methode wurde angewandten an eine Range Objekte. Dies gibt zurück ( wenn mehr als 1 Zelle in diese Range ist ) eine Feld von Elementen die typ Varianten sind. Deswegen variant Type benutz mussten.
Worksheets("DA CCH").Range("B25").Resize(UBound(arrIn1(), 1), UBound(arrIn1(), 2)).Value = arrIn1() 'Einfach weg zu fügen Sie Output Array in einem Linie: Ändern Sie die Größe des Bereichs (Zelle) links oben in dem Ausgangsdaten sollte, zu der Größe der Ausgabe-Array, dann verwenden Sie die zulässige VBA "One -Liner " , um die Werte aus einem Array in eine Tabelle Bereich zuordnen zo können
Let arrIn2() = Worksheets("DA CCH").Range("BC5:BF8").Value
Worksheets("DA CCH").Range("H25").Resize(UBound(arrIn2(), 1), UBound(arrIn2(), 2)).Value = arrIn2()
End Select
End Sub
Bookmarks