Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have a code which creates a master list from all the other worksheets in
the workbook. I need it to list the worksheet name in every row it copies. Right now it only does it for the first line. Here is the code. __________________ Sub Merge() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Delete the sheet "MergeSheet" if it exist Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet with the name "MergeSheet" Set DestSh = ThisWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" 'loop through all worksheets and copy the data to the DestSh For Each sh In ThisWorkbook.Worksheets If sh.Name < DestSh.Name Then Last = LastRow(DestSh) 'This example copies everything, if you only want to copy 'values/formats look at the example below this macro sh.UsedRange.Copy DestSh.Cells(Last + 1, "A") 'This will copy the sheet name in the Q column if you want DestSh.Cells(Last + 1, "Q").Value = sh.Name End If Next Application.Goto DestSh.Cells(1) With Application .ScreenUpdating = True .EnableEvents = True End With Macro1 Macro2 HideRows End Sub ______________________________ Thanks for the help |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Kiba,
try replacing this line DestSh.Cells(Last + 1, "Q").Value = sh.Name with this : With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: I have a code which creates a master list from all the other worksheets in the workbook. I need it to list the worksheet name in every row it copies. Right now it only does it for the first line. Here is the code. __________________ Sub Merge() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Delete the sheet "MergeSheet" if it exist Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet with the name "MergeSheet" Set DestSh = ThisWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" 'loop through all worksheets and copy the data to the DestSh For Each sh In ThisWorkbook.Worksheets If sh.Name < DestSh.Name Then Last = LastRow(DestSh) 'This example copies everything, if you only want to copy 'values/formats look at the example below this macro sh.UsedRange.Copy DestSh.Cells(Last + 1, "A") 'This will copy the sheet name in the Q column if you want DestSh.Cells(Last + 1, "Q").Value = sh.Name End If Next Application.Goto DestSh.Cells(1) With Application .ScreenUpdating = True .EnableEvents = True End With Macro1 Macro2 HideRows End Sub ______________________________ Thanks for the help |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Well I tried it and it posted it to most of the cells but not all of them.
Also it posted it to a bunch of blank cells as well. "Vergel Adriano" wrote: Kiba, try replacing this line DestSh.Cells(Last + 1, "Q").Value = sh.Name with this : With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: I have a code which creates a master list from all the other worksheets in the workbook. I need it to list the worksheet name in every row it copies. Right now it only does it for the first line. Here is the code. __________________ Sub Merge() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Delete the sheet "MergeSheet" if it exist Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet with the name "MergeSheet" Set DestSh = ThisWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" 'loop through all worksheets and copy the data to the DestSh For Each sh In ThisWorkbook.Worksheets If sh.Name < DestSh.Name Then Last = LastRow(DestSh) 'This example copies everything, if you only want to copy 'values/formats look at the example below this macro sh.UsedRange.Copy DestSh.Cells(Last + 1, "A") 'This will copy the sheet name in the Q column if you want DestSh.Cells(Last + 1, "Q").Value = sh.Name End If Next Application.Goto DestSh.Cells(1) With Application .ScreenUpdating = True .EnableEvents = True End With Macro1 Macro2 HideRows End Sub ______________________________ Thanks for the help |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
sorry, it should be like this:
With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(Last + 1 + sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: Well I tried it and it posted it to most of the cells but not all of them. Also it posted it to a bunch of blank cells as well. "Vergel Adriano" wrote: Kiba, try replacing this line DestSh.Cells(Last + 1, "Q").Value = sh.Name with this : With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: I have a code which creates a master list from all the other worksheets in the workbook. I need it to list the worksheet name in every row it copies. Right now it only does it for the first line. Here is the code. __________________ Sub Merge() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Delete the sheet "MergeSheet" if it exist Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet with the name "MergeSheet" Set DestSh = ThisWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" 'loop through all worksheets and copy the data to the DestSh For Each sh In ThisWorkbook.Worksheets If sh.Name < DestSh.Name Then Last = LastRow(DestSh) 'This example copies everything, if you only want to copy 'values/formats look at the example below this macro sh.UsedRange.Copy DestSh.Cells(Last + 1, "A") 'This will copy the sheet name in the Q column if you want DestSh.Cells(Last + 1, "Q").Value = sh.Name End If Next Application.Goto DestSh.Cells(1) With Application .ScreenUpdating = True .EnableEvents = True End With Macro1 Macro2 HideRows End Sub ______________________________ Thanks for the help |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks that seems to have done it.
"Vergel Adriano" wrote: sorry, it should be like this: With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(Last + 1 + sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: Well I tried it and it posted it to most of the cells but not all of them. Also it posted it to a bunch of blank cells as well. "Vergel Adriano" wrote: Kiba, try replacing this line DestSh.Cells(Last + 1, "Q").Value = sh.Name with this : With DestSh .Range(.Cells(Last + 1, "Q"), .Cells(sh.UsedRange.Rows.Count, "Q")).Value = sh.Name End With -- Hope that helps. Vergel Adriano "Kiba" wrote: I have a code which creates a master list from all the other worksheets in the workbook. I need it to list the worksheet name in every row it copies. Right now it only does it for the first line. Here is the code. __________________ Sub Merge() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long With Application .ScreenUpdating = False .EnableEvents = False End With 'Delete the sheet "MergeSheet" if it exist Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet with the name "MergeSheet" Set DestSh = ThisWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" 'loop through all worksheets and copy the data to the DestSh For Each sh In ThisWorkbook.Worksheets If sh.Name < DestSh.Name Then Last = LastRow(DestSh) 'This example copies everything, if you only want to copy 'values/formats look at the example below this macro sh.UsedRange.Copy DestSh.Cells(Last + 1, "A") 'This will copy the sheet name in the Q column if you want DestSh.Cells(Last + 1, "Q").Value = sh.Name End If Next Application.Goto DestSh.Cells(1) With Application .ScreenUpdating = True .EnableEvents = True End With Macro1 Macro2 HideRows End Sub ______________________________ Thanks for the help |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Use Macro To Change Which Macro Assigned To Command Button | Excel Discussion (Misc queries) | |||
Insert row at change macro - how to change it. | Excel Discussion (Misc queries) | |||
macro that will change the font of a cell if i change a value | Excel Discussion (Misc queries) | |||
Cell value change to trigger macro (worksheet change event?) | Excel Programming | |||
Macro to change Macro code? | Excel Programming |