Solved

Excel VBA - Copy / Paste without using "selection"

Posted on 2011-02-21
14
1,154 Views
Last Modified: 2012-05-11
I want to copy values of one row onto another row without "selecting"

Here's my attempt:

Range(vSourceRow).Copy Destination:=Range("2:2").PasteSpecial (xlPasteValues)
0
Comment
Question by:AndresHernando
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
  • 4
  • +1
14 Comments
 
LVL 18

Assisted Solution

by:Cluskitt
Cluskitt earned 65 total points
ID: 34942035
Assuming vSourceRow is a full row:

Range(vSourceRow).Copy
Range("2:2").PasteSpecial (xlPasteValues)
0
 
LVL 3

Expert Comment

by:imaki06
ID: 34942037
Have you tried to make the macro with recoder?

It would give you something like this:
Range("A1:B2").Select
    Selection.Copy
    Range("A4").Select
    ActiveSheet.Paste
0
 
LVL 18

Expert Comment

by:Cluskitt
ID: 34942055
Have you tried reading the question? He specifically said he wanted to copy/paste without selecting.
0
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 
LVL 85

Expert Comment

by:Rory Archibald
ID: 34942130
You could also simply assign the .Value property from one range to the other.
0
 

Author Comment

by:AndresHernando
ID: 34942195
rorya,
what's the script for your suggestion?  What I wrote below doesn't work.
    Range("SourceRow").Value = Range("DestinationRow").Value

Thanks, --Andres
0
 
LVL 85

Accepted Solution

by:
Rory Archibald earned 60 total points
ID: 34942206
Other way round:
Range("DestinationRow").Value = Range("SourceRow").Value

Open in new window

as you are assigning the source values to the destination. Note that the ranges must be the same size.
0
 
LVL 18

Expert Comment

by:Cluskitt
ID: 34942227
If Source and Destination are variables, you need to:

Range(DestinationRow).Value = Range(SourceRow).Value
0
 

Author Comment

by:AndresHernando
ID: 34942272
Cluskitt:
I tried your suggestion (see below), but it bugs out.  What am I doing wrong?

Sub CopyRows()
    Dim vSourceRow As Range
    Dim vRowNum As Long
   
    vRowNum = 9
    Set vSourceRow = Range(vRowNum & ":" & vRowNum)
    Range(vSourceRow).Copy '..............................................Bugs out here
    Range("2:2").PasteSpecial (xlPasteValues)

End Sub


Tnx, --Andres
0
 
LVL 85

Expert Comment

by:Rory Archibald
ID: 34942282
vSourceRow is a Range, not an address, so:
vSourceRow.Copy
    Range("2:2").PasteSpecial xlPasteValues

Open in new window

0
 
LVL 18

Expert Comment

by:Cluskitt
ID: 34942305
Yes, it all depends on the the variables you declare. If you declare it as a range, you have to use it as a range. For example, if you declared vSourceRow as String, then assigned it to: "9:9", you could then use Range(vSourceRow). If it's a range, you have to use it as rorya said. If you use it as integer and assign it the value 9, you have to use: Range(vSourceRow & ":" & vSourceRow)
0
 

Author Closing Comment

by:AndresHernando
ID: 34942337
Thanks for the info.  Both worked.
To be fair, I split, giving the extra 5pts to Cluskitt for answering first.

I'm not sure if this is the correct protocol... I just recently started using this site.

Please tell me if I am in breach of proper etiquette by splitting pts like I did.
0
 
LVL 85

Expert Comment

by:Rory Archibald
ID: 34942357
To my mind, you closed this properly - thank you! :)
0
 
LVL 18

Expert Comment

by:Cluskitt
ID: 34942521
I agree. Both answered the question using different approaches. Not that points are that important, but it's only fair to split things :)
0
 

Author Comment

by:AndresHernando
ID: 34942706
Great.  Thanks again guys.  --Andres
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Convert between Excel file formats (.XLS, .XLSX, .XLSM) with/without macro option David Miller (dlmille) Intro Over this past Fall, I've had the opportunity to see several similar requests and have developed a couple related solutions associate…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question