Discussion:
VBA - Bereich kopieren - aber nur Werte
(zu alt für eine Antwort)
Volker Neurath
2009-06-16 11:01:31 UTC
Permalink
Hallo zusammen,

mit

Range(bereich).copy

lässt sich bekanntlich ein kompletter Bereich (nahezu) beliebig
kopieren.
Dumm: es werden auch Formeln kopiert.

Gibt es eine Möglichkeit (die ich noch nicht gefunden habe) auf ähnlich
effiziente Weise *nur die Werte* aus einem Bereich zu kopieren, der
formeln beinhaltet - oder muss ich das tatsächlich auch weiterhin
mittels Schleife über den Bereich machen?

(Kurz: gibt es eine VBA entprechung für die manuelle Verfahrensweise:
QuellBereich markieren - STRG+C - erste zelle im Zielbereich
aktivieren - Bearbeiten->Inhalte einfügen... Werte)

Volker
--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
Claus Busch
2009-06-16 11:13:26 UTC
Permalink
Hallo Volker,
Post by Volker Neurath
QuellBereich markieren - STRG+C - erste zelle im Zielbereich
aktivieren - Bearbeiten->Inhalte einfügen... Werte)
probiers mal so:
Range(Bereich).Copy
Range("B2").PasteSpecial xlPasteValues


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP1
Office 2003 SP3 / 2007 Ultimate SP2
Volker Neurath
2009-06-16 11:47:16 UTC
Permalink
Dieser beitrag ist möglicherweise unangemessen. Klicken sie auf, um es anzuzeigen.
Claus Busch
2009-06-16 12:08:06 UTC
Permalink
Hallo Volker,
Post by Volker Neurath
jetzt bleiben nach durchlauf des codes Quell- und Zielbereich markiert.
(um den Quellbereich "marschiert die ameisentruppe" und der zielbereich
ist blassblau hinterlegt)
dann schreibe noch rein:
Application.CutCopyMode = False


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP1
Office 2003 SP3 / 2007 Ultimate SP2
Volker Neurath
2009-06-16 12:42:05 UTC
Permalink
Post by Claus Busch
Application.CutCopyMode = False
Das schickt in jedem Fall schon mal die Ameisen zurück in den Bau ;-)

Der Zielbereich hingegen bleibt weiterhin markiert - allerdings kann ich
damit leben; die Daten werden bei mir in ein weiteres Sheet kopiert, wo
noch ein paar zusätzliche manuelle Eintragungen vorgenommen werden
müssen.

Danke soweit.

Volker
--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
Carlos Naplos
2009-06-17 17:27:30 UTC
Permalink
Post by Volker Neurath
Post by Claus Busch
Application.CutCopyMode = False
Das schickt in jedem Fall schon mal die Ameisen zurück in den Bau ;-)
Der Zielbereich hingegen bleibt weiterhin markiert - allerdings kann ich
damit leben; die Daten werden bei mir in ein weiteres Sheet kopiert, wo
noch ein paar zusätzliche manuelle Eintragungen vorgenommen werden müssen.
Nachdem Du da etwas hinkopiert hast, ist der Zielbereich die aktuelle Auswahl (Selection).

Mit <AndererBereich>.Select (z.B. Range("A1").Select) kannst Du einen anderen Bereich auswählen. (Ich glaube, irgend ein Bereich ist immer ausgewählt.)

Gruß
CN

Thomas Ramel
2009-06-16 12:35:05 UTC
Permalink
Grüezi Volker

Volker Neurath schrieb am 16.06.2009
Post by Volker Neurath
Range(bereich).copy
lässt sich bekanntlich ein kompletter Bereich (nahezu) beliebig
kopieren.
Dumm: es werden auch Formeln kopiert.
Nein, das ist logisch, denn es wird immer der komplette Bereich kopiert....
Post by Volker Neurath
Gibt es eine Möglichkeit (die ich noch nicht gefunden habe) auf ähnlich
effiziente Weise *nur die Werte* aus einem Bereich zu kopieren, der
formeln beinhaltet - oder muss ich das tatsächlich auch weiterhin
mittels Schleife über den Bereich machen?
QuellBereich markieren - STRG+C - erste zelle im Zielbereich
aktivieren - Bearbeiten->Inhalte einfügen... Werte)
...aber nur die Werte wieder eingefügt.

Eine Methode wie Du dies tun kannst hast Du von Claus ja schon erfahren.

Es gibt aber auch das umgekehrte, dass du in den Zielbereich nur die Werte
schreiben lässt. Das bedingt, dass Du die Grösse der Quelle genau bestimmst
und im Ziel einen identisch grossen Bereich ansprichst.
Für deine Zeilen könnte das dann so aussehen (für die Variablen die Du
verwendest habe ich einfach mal Dummy-Werte angenommen):

preiseerste = "A1"
preiseletzte = "B20"
With Range(preiseerste & ":" & preiseletzte)
Sheets("upload").Range("H4").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]
Volker Neurath
2009-06-16 12:50:55 UTC
Permalink
Post by Thomas Ramel
Es gibt aber auch das umgekehrte, dass du in den Zielbereich nur die Werte
schreiben lässt.
Das ist ja genau das, was ich will ;)
Post by Thomas Ramel
Das bedingt, dass Du die Grösse der Quelle genau bestimmst
Wird ermittelt
Post by Thomas Ramel
preiseerste = "A1"
preiseletzte = "B20"
With Range(preiseerste & ":" & preiseletzte)
Sheets("upload").Range("H4").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
Super!

Macht - wie auch Claus' Variante - exakt was ich möchte.

jetzt muss ich mich ja sogar für eine Variante entscheiden...

Deine hat den vorteil, dass weder Ameisen noch blaue Flächen
zurückbleiben *gg*

Volker
--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
Thomas Ramel
2009-06-16 13:06:24 UTC
Permalink
Grüezi Volker

Volker Neurath schrieb am 16.06.2009
Post by Volker Neurath
Post by Thomas Ramel
Es gibt aber auch das umgekehrte, dass du in den Zielbereich nur die Werte
schreiben lässt.
Das ist ja genau das, was ich will ;)
So hatte ich das verstanden, ja
Post by Volker Neurath
Post by Thomas Ramel
preiseerste = "A1"
preiseletzte = "B20"
With Range(preiseerste & ":" & preiseletzte)
Sheets("upload").Range("H4").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
Super!
Macht - wie auch Claus' Variante - exakt was ich möchte.
jetzt muss ich mich ja sogar für eine Variante entscheiden...
Tja, das ist dann halt die Qual der Wahl ;-)
Post by Volker Neurath
Deine hat den vorteil, dass weder Ameisen noch blaue Flächen
zurückbleiben *gg*
...das wolltest Du doch, wenn ich mich recht entsinne... ;-) ;-)



Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]
Volker Neurath
2009-06-16 13:43:23 UTC
Permalink
Post by Volker Neurath
Deine hat den vorteil, dass weder Ameisen noch blaue Flächen
zurückbleiben *gg*
....das wolltest Du doch, wenn ich mich recht entsinne... ;-) ;-)
*gg*

Hab jetzt deine Variante in mein Workbook eingebaut und auch an weitere
Sheets desselben angepasst.

Perfekt, danke!

Volker
--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
Loading...