![]() |
Condensing a macro
The macro below copies some named ranges, pastes them into a new sheet and
then goes back copies 10 of the same ranges plus two new ones.This will have to repeat its self 32 times to get the data the way I want it (make a database from a table)! So if there is a way of condensing this macro or make it more efficent I would be very grateful. Thanks, Esther With Worksheets("Master").Range("CUST,REG,RSM,MKTSEG,AT T,PLAT,CMACPN,CUSTPN,TECH,CUSTACC,MAY06OOH,MAY06PR ICE").Copy Sheets("New").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'NEXT Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select Worksheets("Master").Range("CUST,REG,RSM,MKTSEG,AT T,PLAT,CMACPN,CUSTPN,TECH,CUSTACC,MAY06FORC,MAY06P RICE").Copy Sheets("New").Select ActiveCell.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'NEXT Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select End With End Sub |
Condensing a macro
Hi
you could use a sub similar to: '---------------------------------------------- 'Copy origin range (RgO) and paste in last cell in ' destination (rgD) column Sub AddDataToSheet(RgO As Range, RgD As Range) Dim rg As Range If RgO Is Nothing Or RgD Is Nothing Then Exit Sub Set rg = RgD.EntireColumn Set rg = rg.Cells(rg.Cells.Count).End(xlUp).Offset(1, 0) RgO.Copy RgD.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub '--------------------------------------------------------- now call it using: Sub test() dim rg1 as range, rg2 as range set rg1=Worksheets("Master").Range("CUST,REG,RSM,MKTSE G,ATT,PLAT,CMACPN,CUSTPN,TECH,CUSTACC,MAY06OOH,MAY 06PRICE") set rg2=workSheets("New").range("A2") 'either call the sub each time or put in a loop. AddDataToSheet rg1,rg2 AddDataToSheet rg1,rg2 AddDataToSheet rg1,rg2 end sub -- Regards, Sébastien <http://www.ondemandanalysis.com "EstherJ" wrote: The macro below copies some named ranges, pastes them into a new sheet and then goes back copies 10 of the same ranges plus two new ones.This will have to repeat its self 32 times to get the data the way I want it (make a database from a table)! So if there is a way of condensing this macro or make it more efficent I would be very grateful. Thanks, Esther With Worksheets("Master").Range("CUST,REG,RSM,MKTSEG,AT T,PLAT,CMACPN,CUSTPN,TECH,CUSTACC,MAY06OOH,MAY06PR ICE").Copy Sheets("New").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'NEXT Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select Worksheets("Master").Range("CUST,REG,RSM,MKTSEG,AT T,PLAT,CMACPN,CUSTPN,TECH,CUSTACC,MAY06FORC,MAY06P RICE").Copy Sheets("New").Select ActiveCell.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'NEXT Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select End With End Sub |
All times are GMT +1. The time now is 04:21 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com