Copy/Paste Values code

J

Jules

Is there a faster way to copy and paste one entire worksheets data into
another existing worksheet? I do NOT want to rename the sheets. Code below is
what I'm using now but it seems that there should be a simpler way. Thanks!

Sub CopySheets()
Sheets("Sheet2").Select
Cells.Select
Selection.Copy
Sheets("Sheet1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
 
R

Rick Rothstein

Give this a try...

Sub CopySheets()
Sheets("Sheet2").Cells.Copy Sheets("Sheet1").Range("A1")
End Sub
 
M

Mike H

Hi,

Maybee this

Sub CopySheets()
Sheets("Sheet2").UsedRange.Copy
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
J

Jules

Yes. Thanks!!

Mike H said:
Hi,

Maybee this

Sub CopySheets()
Sheets("Sheet2").UsedRange.Copy
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
End Sub
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
J

JLGWhiz

Might be a little faster.

Sub CopySheets()
Sheets("Sheet2").UsedRange.Copy Sheets("Sheet1").Range("A1")
End Sub
 
R

Rick Rothstein

Using the UsedRange might not be what the OP wants. If the UsedRange does
not start at A1, then using it in your code will move all the data up so
that the data starts in A1; using Cells as I proposed will keep the moved
data in the same cells they currently are in. Try this experiment with both
options to see the difference. Fill Sheet 1 with some data, then select the
first 5 rows and click Edit/Clear/All on the menu bar (do not just hit the
Delete key) to clear those cells from the UsedRange., then run your code and
watch where Row 6's data (and all the rows after it) end up. Now repeat the
process using my code.... Row 6 and all following rows remain in the same
rows they currently are in on Sheet2.
 
M

Mike H

Hi,

It will be faster but the OP noted in the header and example code that it
was values the were to be pasted.
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
M

Mike H

Rick,

Good point about the difference between usedrange and cells but yours and
JLGWhiz options don't paste values as the OP requested.
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
M

Mike H

Rick,

I meant to add that a neat solution would be

Sheets("Sheet1").Cells.Value Sheets("Sheet2").Cells.Value

Unfortunately; at least on my pc, I get an out of memory error so have to
limit the range with say

Sheets("Sheet1").Range("A1:d20").Value =
Sheets("Sheet2").Range("A1:d20").Value

The latter approach is (i think) frought with danger because you may be able
to set up the correct range by finding the last row and column but there's no
way i know of establishing any memory limitation on the host computer which
is why I don't bother with the 'single line' approach for pasting values.
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
R

Rick Rothstein

Good point about the values. How about this then...

Sub CopySheets()
With Sheets("Sheet1")
Sheets("Sheet2").Cells.Copy .Range("A1")
.UsedRange.Value = .UsedRange.Value
End With
End Sub

Notice using UsedRange in the second line of code inside the With block is
fine because the cells are already in place at that point of the code.
 
M

Mishell

This problem can be solved like this:

Sub CopySheets()
r = Sheets("Sheet2").UsedRange.Row
c = Sheets("Sheet2").UsedRange.Column
Sheets("Sheet2").UsedRange.Copy Sheets("Sheet3").Cells(r, c)
End Sub

Mishell
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top