Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / January 2006

Tip: Looking for answers? Try searching our database.

For Each loop

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Michael Smith - 19 Jan 2006 15:51 GMT
I have a workbook with multiple worksheets.  My "MAIN" sheet has Names
in column A, and Sales data in Columns B and C.
The other worksheets are titled after column A.  I want to cycle through
the names on my MAIN sheet and copy the data to the worksheet matching
the name in column A.

Please help me with this For Each loop.
Toppers - 19 Jan 2006 17:40 GMT
Michael,
               Copies data to columns A & B on named worksheets.

Change  wks2.Range("a" & nr) to wks2.Range("b" & nr) if B required.

HTH

Sub CopyToSheets()

Dim lastrow As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Dim Wks

Set ws1 = ThisWorkbook.Worksheets("MAIN")
ws1.Activate
With ws1
   lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
   For r = 2 To lastrow
       Set wks2 = Worksheets(Cells(r, 1).Value)
       nr = wks2.Cells(Rows.Count, 1).End(xlUp).Row + 1
       ws1.Cells(r, 1).Offset(0, 1).Resize(1, 2).Copy wks2.Range("a" & nr)
   Next r
End With
End Sub

> I have a workbook with multiple worksheets.  My "MAIN" sheet has Names
> in column A, and Sales data in Columns B and C.
[quoted text clipped - 5 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***
Michael Smith - 19 Jan 2006 18:00 GMT
Thank you, thank you!..that works wonderfully....one last question that
I probably should have included in the original post,  if the
worksheet(Name in column A) doesn't exist, how would i get it to create
a new worksheet with that name.
Thanks again, i was on the wrong track before your help.
-Mike
Toppers - 19 Jan 2006 19:32 GMT
Michael,
              Try this. Function routine is courtesy of Bob Phillips from a
previous posting.

Sub CopyToSheets()

Dim lastrow As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Dim Wks

Set ws1 = ThisWorkbook.Worksheets("MAIN")
ws1.Activate
With ws1
   lastrow = .Cells(Rows.Count, "A").End(xlUp).Row
   For r = 2 To lastrow
       If Not SheetExists(.Cells(r, 1)) Then
           Set NewWS = Worksheets.Add
           NewWS.Name = .Cells(r, 1)
       End If
       Set wks2 = Worksheets(.Cells(r, 1).Value)
       nr = wks2.Cells(Rows.Count, 1).End(xlUp).Row + 1
       ws1.Cells(r, 1).Offset(0, 1).Resize(1, 2).Copy wks2.Range("a" & nr)
   Next r
End With
End Sub
'-----------------------------------------------------------------
Function SheetExists(Sh As String, _
                    Optional wb As Workbook) As Boolean
'-----------------------------------------------------------------
Dim oWs As Worksheet
   If wb Is Nothing Then Set wb = ActiveWorkbook
   On Error Resume Next
   SheetExists = CBool(Not wb.Worksheets(Sh) Is Nothing)
   On Error GoTo 0
End Function

> Thank you, thank you!..that works wonderfully....one last question that
> I probably should have included in the original post,  if the
[quoted text clipped - 4 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***
Dave Peterson - 19 Jan 2006 18:09 GMT
Debra Dalgleish and Ron de Bruin have samples that you may like.  Ron's addin
may be sufficient right out of the box.

Debra's site:
http://www.contextures.com/excelfiles.html

Create New Sheets from Filtered List -- uses an Advanced Filter to create
separate sheet of orders for each sales rep visible in a filtered list; macro
automates the filter. AdvFilterRepFiltered.xls 35 kb

or

Update Sheets from Master -- uses an Advanced Filter to send data from
Master sheet to individual worksheets -- replaces old data with current.
AdvFilterCity.xls 55 kb

And Ron de Bruin's easyfilter.
http://www.rondebruin.nl/easyfilter.htm

> I have a workbook with multiple worksheets.  My "MAIN" sheet has Names
> in column A, and Sales data in Columns B and C.
[quoted text clipped - 5 lines]
>
> *** Sent via Developersdex http://www.developersdex.com ***

Signature

Dave Peterson

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.