Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
HJ HJ is offline
external usenet poster
 
Posts: 28
Default Macro Revision needed

I have the following macro which copies certain rows from a large spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and 21. I
would like to add on to this macro to also copy rows 25, 26, 30, 32, 33, and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have all
the copied data on one tab (Data Master-Likely) and I'm not sure how to write
the code to look for the first empty row on the newly created master tab
(Data Master-Likely)and then loop through the process again. I hope that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 19
Default Macro Revision needed

I like to do this the long way, using R1C1 notation.
Try something like this (untested) (note that there is no
selection during code)

Dim rw As Integer, lrw As Integer, i As Integer

For i = 1 To 8
Select Case i ' define rows to be copied
Case 1
rw = 19
Case 2
rw = 20
Case 3
rw = 21
Case 4
rw = 25
Case 5
rw = 26
Case 6
rw = 30
Case 7
rw = 32
Case 8
rw = 33
End Select

' find 1st open row on new sheet
lrw = Sheets("NewData").Cells(Rows.Count, "A").End(xlUp).Offset(1,
0).Row

' alternate formula for 1st open row on new sheet
' lrw = Sheets("NewData").Cells.SpecialCells(xlLastCell).R ow + 1


' copy rows to new sheet
Sheets("MyData").Rows(rw).Copy _
Destination:=Sheets("NewData").Cells(lrw, 1)

Next



--
rand451
"HJ" wrote in message
...
I have the following macro which copies certain rows from a large
spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and 21.
I
would like to add on to this macro to also copy rows 25, 26, 30, 32, 33,
and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have all
the copied data on one tab (Data Master-Likely) and I'm not sure how to
write
the code to look for the first empty row on the newly created master tab
(Data Master-Likely)and then loop through the process again. I hope that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ



  #3   Report Post  
Posted to microsoft.public.excel.programming
GS GS is offline
external usenet poster
 
Posts: 364
Default Macro Revision needed

If you'd like to be able to select which rows of data you want to copy onto
the new worksheet, try this code. It assumes you will select a cell in each
row to be copied. This will allow you to accommodate any future changes in
which rows to copy

Sub CopyData()
' Copies selected rows of data from one sheet to another.
'
' The target sheet (DataMaster) is created to receive the data,
' and increments 1 row for each cell selected on source sheet (DataEntry).
'
' Source sheet (DataEntry) values are the entire rows for each cell the user
selects.

Dim wks1 As Worksheet, wks2 As Worksheet
Dim lRow As Long, c As Object

Set wks1 = ActiveWorkbook.Sheets("DataEntry")
Set wks2 = Worksheets.Add(after:=Sheets(ActiveWorkbook.Sheets .Count))
wks2.Name = "DataMaster"
wks1.Activate
lRow = 1

' Ctrl+Select any cell of each 'row' to be copied
For Each c In Selection
c.EntireRow.Copy
With wks2.Rows(lRow)
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
lRow = lRow + 1
Next

Application.CutCopyMode = False
wks2.Activate

End Sub



"HJ" wrote:

I have the following macro which copies certain rows from a large spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and 21. I
would like to add on to this macro to also copy rows 25, 26, 30, 32, 33, and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have all
the copied data on one tab (Data Master-Likely) and I'm not sure how to write
the code to look for the first empty row on the newly created master tab
(Data Master-Likely)and then loop through the process again. I hope that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ

  #4   Report Post  
Posted to microsoft.public.excel.programming
HJ HJ is offline
external usenet poster
 
Posts: 28
Default Macro Revision needed

Is it possible to add a loop so that once I select say row 19, 20, 21, 25,
26, 30, 32, 33, 34, 49, 50, and 65, the macro would look down 52 rows and
repeat the process (so that rows 71, 72, 73, etc.) are copied all the way
through the spreadsheet?

I've modified my original macro to accomplish this but I now have multiple
macros with multiple destination sheets which I need to consolidate. I'd
prefer to have one destination sheet. If I left my original macro as is, how
would I write a second macro to copy additional rows to the destination sheet
created in the original macro (so look for the first empty row and copy
there). Does that make sense?

Thanks again for your help.

"GS" wrote:

If you'd like to be able to select which rows of data you want to copy onto
the new worksheet, try this code. It assumes you will select a cell in each
row to be copied. This will allow you to accommodate any future changes in
which rows to copy

Sub CopyData()
' Copies selected rows of data from one sheet to another.
'
' The target sheet (DataMaster) is created to receive the data,
' and increments 1 row for each cell selected on source sheet (DataEntry).
'
' Source sheet (DataEntry) values are the entire rows for each cell the user
selects.

Dim wks1 As Worksheet, wks2 As Worksheet
Dim lRow As Long, c As Object

Set wks1 = ActiveWorkbook.Sheets("DataEntry")
Set wks2 = Worksheets.Add(after:=Sheets(ActiveWorkbook.Sheets .Count))
wks2.Name = "DataMaster"
wks1.Activate
lRow = 1

' Ctrl+Select any cell of each 'row' to be copied
For Each c In Selection
c.EntireRow.Copy
With wks2.Rows(lRow)
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
lRow = lRow + 1
Next

Application.CutCopyMode = False
wks2.Activate

End Sub



"HJ" wrote:

I have the following macro which copies certain rows from a large spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and 21. I
would like to add on to this macro to also copy rows 25, 26, 30, 32, 33, and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have all
the copied data on one tab (Data Master-Likely) and I'm not sure how to write
the code to look for the first empty row on the newly created master tab
(Data Master-Likely)and then loop through the process again. I hope that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Macro Revision needed

Here is a sample:

Sub AB()
sStr = "A19:A21,A25:A26,A30,A32:A34,A49:A50,A65"
For i = 1 To 105 Step 52
Set rng = Cells(i, 1).Range(sStr).EntireRow
Debug.Print i, rng.Address
Next

End Sub
produces:

1 $19:$21,$25:$26,$30:$30,$32:$34,$49:$50,$65:$65
53 $71:$73,$77:$78,$82:$82,$84:$86,$101:$102,$117:$11 7
105 $123:$125,$129:$130,$134:$134,$136:$138,$153:$154, $169:$169


if these are the rows you want to copy and you want to stop when the 19 th
cell is blank then you can use the code below. However, copying row 65 goes
beyond your 52 row pattern, so that seems wrong.

Sub AB()
Dim sStr as String, i as Long
Dim sh as Worksheet
Dim sh1 as Worksheet
set sh1 = Worksheets.Add(After:=Worksheets( _
Worksheets.Count))
sh1.Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
sStr = "A19:A21,A25:A26,A30,A32:A34,A49:A50,A65"
For i = 1 To 65536 Step 52
Set rng = sh.Cells(i, 1).Range(sStr).EntireRow
if isempty(sh.Cells(i,1).Range("A19")) then exit sub
rng.copy Destination:=sh1.Cells(rows.count,1).End(xlup)(2)
Next
End sub

--
Regards,
Tom Ogilvy

"HJ" wrote in message
...
Is it possible to add a loop so that once I select say row 19, 20, 21, 25,
26, 30, 32, 33, 34, 49, 50, and 65, the macro would look down 52 rows and
repeat the process (so that rows 71, 72, 73, etc.) are copied all the way
through the spreadsheet?

I've modified my original macro to accomplish this but I now have multiple
macros with multiple destination sheets which I need to consolidate. I'd
prefer to have one destination sheet. If I left my original macro as is,

how
would I write a second macro to copy additional rows to the destination

sheet
created in the original macro (so look for the first empty row and copy
there). Does that make sense?

Thanks again for your help.

"GS" wrote:

If you'd like to be able to select which rows of data you want to copy

onto
the new worksheet, try this code. It assumes you will select a cell in

each
row to be copied. This will allow you to accommodate any future changes

in
which rows to copy

Sub CopyData()
' Copies selected rows of data from one sheet to another.
'
' The target sheet (DataMaster) is created to receive the data,
' and increments 1 row for each cell selected on source sheet

(DataEntry).
'
' Source sheet (DataEntry) values are the entire rows for each cell the

user
selects.

Dim wks1 As Worksheet, wks2 As Worksheet
Dim lRow As Long, c As Object

Set wks1 = ActiveWorkbook.Sheets("DataEntry")
Set wks2 = Worksheets.Add(after:=Sheets(ActiveWorkbook.Sheets .Count))
wks2.Name = "DataMaster"
wks1.Activate
lRow = 1

' Ctrl+Select any cell of each 'row' to be copied
For Each c In Selection
c.EntireRow.Copy
With wks2.Rows(lRow)
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
lRow = lRow + 1
Next

Application.CutCopyMode = False
wks2.Activate

End Sub



"HJ" wrote:

I have the following macro which copies certain rows from a large

spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and

21. I
would like to add on to this macro to also copy rows 25, 26, 30, 32,

33, and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have

all
the copied data on one tab (Data Master-Likely) and I'm not sure how

to write
the code to look for the first empty row on the newly created master

tab
(Data Master-Likely)and then loop through the process again. I hope

that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ





  #6   Report Post  
Posted to microsoft.public.excel.programming
HJ HJ is offline
external usenet poster
 
Posts: 28
Default Macro Revision needed

Thank you very much!!! Once again, you have saved me tons of time trying to
figure this one out. It works perfectly.

Have a nice weekend.

"Tom Ogilvy" wrote:

Here is a sample:

Sub AB()
sStr = "A19:A21,A25:A26,A30,A32:A34,A49:A50,A65"
For i = 1 To 105 Step 52
Set rng = Cells(i, 1).Range(sStr).EntireRow
Debug.Print i, rng.Address
Next

End Sub
produces:

1 $19:$21,$25:$26,$30:$30,$32:$34,$49:$50,$65:$65
53 $71:$73,$77:$78,$82:$82,$84:$86,$101:$102,$117:$11 7
105 $123:$125,$129:$130,$134:$134,$136:$138,$153:$154, $169:$169


if these are the rows you want to copy and you want to stop when the 19 th
cell is blank then you can use the code below. However, copying row 65 goes
beyond your 52 row pattern, so that seems wrong.

Sub AB()
Dim sStr as String, i as Long
Dim sh as Worksheet
Dim sh1 as Worksheet
set sh1 = Worksheets.Add(After:=Worksheets( _
Worksheets.Count))
sh1.Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
sStr = "A19:A21,A25:A26,A30,A32:A34,A49:A50,A65"
For i = 1 To 65536 Step 52
Set rng = sh.Cells(i, 1).Range(sStr).EntireRow
if isempty(sh.Cells(i,1).Range("A19")) then exit sub
rng.copy Destination:=sh1.Cells(rows.count,1).End(xlup)(2)
Next
End sub

--
Regards,
Tom Ogilvy

"HJ" wrote in message
...
Is it possible to add a loop so that once I select say row 19, 20, 21, 25,
26, 30, 32, 33, 34, 49, 50, and 65, the macro would look down 52 rows and
repeat the process (so that rows 71, 72, 73, etc.) are copied all the way
through the spreadsheet?

I've modified my original macro to accomplish this but I now have multiple
macros with multiple destination sheets which I need to consolidate. I'd
prefer to have one destination sheet. If I left my original macro as is,

how
would I write a second macro to copy additional rows to the destination

sheet
created in the original macro (so look for the first empty row and copy
there). Does that make sense?

Thanks again for your help.

"GS" wrote:

If you'd like to be able to select which rows of data you want to copy

onto
the new worksheet, try this code. It assumes you will select a cell in

each
row to be copied. This will allow you to accommodate any future changes

in
which rows to copy

Sub CopyData()
' Copies selected rows of data from one sheet to another.
'
' The target sheet (DataMaster) is created to receive the data,
' and increments 1 row for each cell selected on source sheet

(DataEntry).
'
' Source sheet (DataEntry) values are the entire rows for each cell the

user
selects.

Dim wks1 As Worksheet, wks2 As Worksheet
Dim lRow As Long, c As Object

Set wks1 = ActiveWorkbook.Sheets("DataEntry")
Set wks2 = Worksheets.Add(after:=Sheets(ActiveWorkbook.Sheets .Count))
wks2.Name = "DataMaster"
wks1.Activate
lRow = 1

' Ctrl+Select any cell of each 'row' to be copied
For Each c In Selection
c.EntireRow.Copy
With wks2.Rows(lRow)
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
lRow = lRow + 1
Next

Application.CutCopyMode = False
wks2.Activate

End Sub



"HJ" wrote:

I have the following macro which copies certain rows from a large

spreadsheet
to a separate worksheet. This macro currently copies rows 19, 20 and

21. I
would like to add on to this macro to also copy rows 25, 26, 30, 32,

33, and
34 to that same worksheet.

Can someone help with the code to add this data? I would like to have

all
the copied data on one tab (Data Master-Likely) and I'm not sure how

to write
the code to look for the first empty row on the newly created master

tab
(Data Master-Likely)and then loop through the process again. I hope

that
makes sense.

Sub CopyLikelyDataData()
Dim i As Long, rng As Range, sh As Worksheet
Dim rng1 As Range
Worksheets.Add(After:=Worksheets( _
Worksheets.Count)).Name = "Data Master-Likely"
Set sh = Worksheets("Data Entry-Likely to Acquire")
i = 19
Do While Not IsEmpty(sh.Cells(i, 1))
Set rng = Union(sh.Cells(i, 1), _
sh.Cells(i + 1, 1).Resize(2, 1))
rng.EntireRow.Copy
Set rng1 = Worksheets("Data Master-Likely") _
.Cells(Rows.Count, 1).End(xlUp)(2)
rng1.PasteSpecial xlValues
rng1.PasteSpecial xlFormats
i = i + 52
Loop
End Sub

Thanks in advance for your help.

HJ




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
draw revision cloud sarvesh Excel Discussion (Misc queries) 1 December 13th 09 12:52 PM
Revision kbkst via OfficeKB.com Excel Discussion (Misc queries) 4 February 17th 06 07:12 PM
Revision Number John Excel Worksheet Functions 2 December 14th 04 05:29 PM
Macro Formula revision? Mark Excel Worksheet Functions 1 November 28th 04 01:43 AM
Notation on Revision of Projects Tim Childs Excel Programming 2 January 20th 04 10:27 PM


All times are GMT +1. The time now is 01:51 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"