PDA

Vollständige Version anzeigen : Wert einer Zelle kopieren


Beycha
25.02.2008, 10:52
Hallo!

Ich habe mal wieder ein Problem ;)

Und zwar möchte ich aus einer Arbeitsmappe bitte nur den Inhalt von einigen Zellen in eine andere Arbeitsmappe kopieren, nicht die Formatierung, keine Bezüge, keine Formeln.
Normalerweise würde ich das über VBA mittels Zelle.Value setzen machen. Nur sind es recht viele Zellen, zum Teil in Ranges gruppiert.
Die Copy-Funktion kopiert mir leider so ziemlich alles an Formatierungen usw. in die neue Arbeitsmappe und das will ich nicht.

Gibt es dazu eine - möglichst wenig schreibaufwendige - Lösung?
Im Forum und über google habe ich bisher leider nichts passendes gefunden :(

Danke schonmal.

Sebastian Schulz
25.02.2008, 11:11
Hallo,

hast du es schonmal mit .PasteSpecial Paste:=xlPasteValues ausprobiert?

Berti_S
25.02.2008, 11:12
Hallo Beycha,

suche mal nach

.PasteSpecial Paste:=xlPasteValues

hier im Forum.
Damit werden nach einem Kopiervorgang nur Werte eingefügt, aber keine Formatierungen etc.

Berti

Beycha
25.02.2008, 11:28
So. Ich habe mal gesucht, ich habe auch was gefunden und mir einen Code zusammengebastelt. Nur kriege ich bei dem die vollkommen sinnfreie Fehlermeldung "400". Ohne Debugging, ohne weiteren Kommentar :(


Sub Kopierversuche()

Worksheets("Tabelle1").Range(Cells(1, 1).Address, Cells(2, 2).Address).Select
Selection.Copy
Worksheets("Tabelle2").Cells(3, 3).Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub

Ob da ein "Selection" in der paste-anwesiung steht oder nicht, ist was den Fehler angeht egal. Der ist immer 400.
Was mache ich falsch?

Und warum zum Henker spinnt mein Excel so dermaßen rum?
Dass er bei Fehlern in der Programmausführung nicht mehr in den Debug-Modus wechselt ist schon nervig, aber jetzt kriege ich die Code-Umgebung auch nicht mehr als eigenes Fenster, sondern muss jedes Mal mit Alt+F11 wieder da hinschalten *grummel*

Berti_S
25.02.2008, 11:32
Hallo Beycha,

entferne doch mal 2x ".Address" aus deiner ersten Zeile.
Dann sollte es eigentlich gehen (ungetestet).

Berti

Beycha
25.02.2008, 11:40
Hallo Berti,

leider kriege ich immer noch dieselber Fehlermeldung :(

Sebastian Schulz
25.02.2008, 11:47
Hallo Beycha,

du kannst hier auf Select verzichten und direkt die Werte übertragen (auch mit Range)

Worksheets("Tabelle1").Range("A1:B2").Copy
Worksheets("Tabelle2").Range("C3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Aber wenn du umbedingt Cells verwenden möchtest.
Worksheets("Tabelle1").Range(Cells(1, 1), Cells(2, 2)).Copy
Worksheets("Tabelle2").Cells(3, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Jedoch ist m.E auch hier Copy und Paste überflüssig und könnte mit einem Direktbezug gelöst werden.

Beycha
25.02.2008, 11:53
Danke, Sebastian!
Das funktioniert jetzt so wie ich mir das vorgestellt habe.

EDIT: in dem Beispiel hier wäre ein Direktbezug natürlich möglich, in der eigentlichen Datei, um die es geht, nicht. Denn da kopiere ich von einer Datei in eine andere.

Danke auch an alle anderen für ihre Mühe :)

Berti_S
25.02.2008, 11:55
Hallo Beycha,

hier nun getestet:

Worksheets("Tabelle1").Range(Cells(1, 1), Cells(2, 2)).Select
Selection.Copy
With Worksheets("Tabelle2")
.Range(.Cells(1, 1), .Cells(1, 1)).PasteSpecial Paste:=xlPasteValues
End With

Aber Sebastian hat schon recht mit dem Verzicht auf Select.


Berti