1

This should be a relatively easy thing to do, but please forgive me since I'm new with VBA. I'm trying to automate looping through copying columns from one sheet to pasting onto another. The columns are different lengths and the offsets are different between copying and pasting.

Here's what I have so far (it times out so not sure what's going on with my loop).

Sub LoopEveryTwoColumns() Dim original As Range Dim destination As Range Set original = Sheets("Sheet1").Columns("B") Set destination = Sheets("Sheet2").Columns("A") Dim x As Long For x = 1 To 3 original.Copy (destination) original.Offset(0, 2).Copy (destination.Offset(0, 1)) Next x End Sub 

Here's what I want it to look like. The first picture is the original range on Sheet1. The second picture is the destination range that should be copied onto Sheet2.

Original Range on Sheet1

Destination Range on Sheet2

2 Answers 2

1

Without variables it is quite simple:

Sub TestMe() Dim x As Long For x = 1 To 3 Worksheets(1).Columns(x * 2).Copy Worksheets(2).Columns(x) Next x End Sub 

The idea is that you need every second column - hence x * 2. And in the second worksheet, you need to paste it consequetively - thus x.

If you need to make it with variables (which is in general better), set the variables for the worksheet, not the columns:

Sub TestMe() Dim original As Worksheet Dim destination As Worksheet Set original = Worksheets(1) Set destination = Worksheets(2) Dim x As Long For x = 1 To 3 original.Columns(x * 2).Copy destination.Columns(x) Next x End Sub 
Sign up to request clarification or add additional context in comments.

Comments

0

Try this one instead.

For x = 1 To 3 original.Columns(x+1).Copy destination.Cells(1,x) Next x 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.