Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Hi All......
I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3 |
#2
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
To refer to another macro within your code try this
Call OtherMacro(argument1, arg 2, arg 3 if they exist) "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3 |
#3
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Thanks Barb, but I have no trouble "calling" the second macro.....where my
problem lies is in declaring a variable in the first macro and then giving it a value, and then being able to use it in the second.......... Vaya con Dios, Chuck, CABGx3 "Barb Reinhardt" wrote: To refer to another macro within your code try this Call OtherMacro(argument1, arg 2, arg 3 if they exist) "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3 |
#4
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Ok.........I got it unscrambled.........the variable has to be declared as a
Global Variable rather than being declared inside a previous macro.........then all worked fine......this note just to close the loop. Vaya con Dios, Chuck, CABGx3 "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3 |
#5
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
On May 18, 9:58 am, CLR wrote:
Ok.........I got it unscrambled.........the variable has to be declared as a Global Variable rather than being declared inside a previous macro.........then all worked fine......this note just to close the loop. Vaya con Dios, Chuck, CABGx3 "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3- Hide quoted text - - Show quoted text - Chuck, what did your final macro look like. I have a similar problem Greg |
#6
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
At the top of the code module, above the first macro, put something like
this........ Public MyName As String Then you can use the variable you called MyName (or whatever else you want to call it) thereafter, and the value can be carried over from macro to macro My first macro sets the value of MyName...... Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value MyName = cell.Value Call AutofilterExtract Next End Sub The value of MyName then changes to be whatever SheetName the above macro is presently clycling on.... Then in the AutofilterExtract macro, which is fairly long, I use lines like these... Sheets(MyName).Select Selection.AutoFilter Field:=3, Criteria1:=MyName Worksheets(MyName).Select hth Vaya con Dios, Chuck, CABGx3 "GregR" wrote in message ups.com... On May 18, 9:58 am, CLR wrote: Ok.........I got it unscrambled.........the variable has to be declared as a Global Variable rather than being declared inside a previous macro.........then all worked fine......this note just to close the loop. Vaya con Dios, Chuck, CABGx3 "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3- Hide quoted text - - Show quoted text - Chuck, what did your final macro look like. I have a similar problem Greg |
#7
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
On May 19, 8:29 am, "CLR" wrote:
At the top of the code module, above the first macro, put something like this........ Public MyName As String Then you can use the variable you called MyName (or whatever else you want to call it) thereafter, and the value can be carried over from macro to macro My first macro sets the value of MyName...... Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value MyName = cell.Value Call AutofilterExtract Next End Sub The value of MyName then changes to be whatever SheetName the above macro is presently clycling on.... Then in the AutofilterExtract macro, which is fairly long, I use lines like these... Sheets(MyName).Select Selection.AutoFilter Field:=3, Criteria1:=MyName Worksheets(MyName).Select hth Vaya con Dios, Chuck, CABGx3 "GregR" wrote in message ups.com... On May 18, 9:58 am, CLR wrote: Ok.........I got it unscrambled.........the variable has to be declared as a Global Variable rather than being declared inside a previous macro.........then all worked fine......this note just to close the loop. Vaya con Dios, Chuck, CABGx3 "CLR" wrote: Hi All...... I have a nifty macro that I got from this group that works just fine to create new sheets with the names taken from a list. Sub Addsheets() Dim rng As Range, cell As Range With Worksheets("VendorList") Set rng = .Range("B2", .Range("B2").End(xlDown)) End With For Each cell In rng Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = cell.Value Next End Sub I have another macro that runs the Autofilter and places the filtered results on a specified sheet. Problem is, this takes an individual macro for each sheet. What I would like to do is combine the actions of both macros so I could 1-create new sheets named according to my list, and then 2-Run the Autofilter macro on the DatabaseSheet to extract the relative data to each sheet. I have the following lines in my data extration macro... Selection.AutoFilter Field:=3, Criteria1:=2740 Copy Destination:=Worksheets("2740").Range("A11") What I need is the guidance to be able to replace the 2740 in each of those lines with the name of each new sheet, or with the same names from the same list the new sheets were created from. I hope that's clear, I know it's giving me a headache...... Any help would be much appreciated..... Vaya con Dios, Chuck, CABGx3- Hide quoted text - - Show quoted text - Chuck, what did your final macro look like. I have a similar problem Greg- Hide quoted text - - Show quoted text - Chuck, thanks Greg |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
"openinf file..."ENABLE MACROS...DISABLE MACROS" | Excel Discussion (Misc queries) | |||
Excel 2007 PivotTable "arbitrary shape is not allowed when its elements cross a reference dimension" | Excel Discussion (Misc queries) | |||
HELP on "left","right","find","len","substitute" functions | Excel Discussion (Misc queries) | |||
Count occurences of "1"/"0" (or"TRUE"/"FALSE") in a row w. conditions in the next | New Users to Excel | |||
How to correctly write a cross-sheet "IF" formula in Excel | Excel Worksheet Functions |