Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
I can't figure out how to make a macro non worksheet specific like they were
in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#2
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
In EXCEL 2007:-
When you record your Macro for the first time you will get the Macro panel up (where you name it). In here there is a section called:- Store macro in: It is here that you can select one of the options to make the macro available outside of that Workbook only. Please hit yes if my comments have helped. Thanks. "navel151" wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#3
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
How will that make the macro non-sheet specific?
Gord On Mon, 4 Jan 2010 12:54:02 -0800, trip_to_tokyo wrote: In EXCEL 2007:- When you record your Macro for the first time you will get the Macro panel up (where you name it). In here there is a section called:- Store macro in: It is here that you can select one of the options to make the macro available outside of that Workbook only. Please hit yes if my comments have helped. Thanks. "navel151" wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#4
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
No different than previous versions of Excel.
Use ActiveSheet in your code. e.g. ActiveSheet.Range("A1:A10").Interior.ColorIndex = 3 more specific to your needs............ ActiveSheet.Columns("C:F").Select Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=2, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Gord Dibben MS Excel MVP On Mon, 4 Jan 2010 12:47:01 -0800, navel151 wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#5
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
This in an example. Change sort key1 range to whatever you need
Sub Macro2() Selection.CurrentRegion.Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub Click yes if it helped. -- Greatly appreciated Eva "navel151" wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#6
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
When you record a macro that does something like sorting, typically it
annotates the specific sheet that was active when you recorded it. Also it will do something like selecting the cells you want to take action on. These are both things you probably don't want in your 'generic' macro. So you might end up with code that looks something like this: Sub Macro1() Sheets("Sheet1").Select Range("B2:D4").Select Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Range("A1").Select End Sub The first thing to do away with would be the Sheets("Sheet1").Select statement. Then (here's the answer to your question), set up a couple of range variables to use as part of the sort Dim sRange as Range Dim sKey as Range and set them to the current ActiveSheet!!And modify the code accordingly: Set sRange=ActiveSheet.Range("B2:D4") Set sKey = ActiveSheet.Range("B2") sRange.Sort Key1:=sKey, Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal And you're done with it. "navel151" wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
#7
![]()
Posted to microsoft.public.excel.worksheet.functions
|
|||
|
|||
![]()
Some good resources:
http://www.anthony-vba.kefra.com/vba/vbabasic1.htm http://www.rondebruin.nl/code.htm http://www.contextures.com/xlvba01.html -- Ryan--- If this information was helpful, please indicate this by clicking ''Yes''. "JLatham" wrote: When you record a macro that does something like sorting, typically it annotates the specific sheet that was active when you recorded it. Also it will do something like selecting the cells you want to take action on. These are both things you probably don't want in your 'generic' macro. So you might end up with code that looks something like this: Sub Macro1() Sheets("Sheet1").Select Range("B2:D4").Select Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Range("A1").Select End Sub The first thing to do away with would be the Sheets("Sheet1").Select statement. Then (here's the answer to your question), set up a couple of range variables to use as part of the sort Dim sRange as Range Dim sKey as Range and set them to the current ActiveSheet!!And modify the code accordingly: Set sRange=ActiveSheet.Range("B2:D4") Set sKey = ActiveSheet.Range("B2") sRange.Sort Key1:=sKey, Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal And you're done with it. "navel151" wrote: I can't figure out how to make a macro non worksheet specific like they were in previous versions of Excel. I want to have a macro that will sort the same range of cells of whatever sheet that I am in, rather than having the same macro for each sheet with a different name. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Avoiding the worksheet specific name in a macro | Excel Discussion (Misc queries) | |||
How to run specific macro on selected worksheet? | Excel Discussion (Misc queries) | |||
make a macro 'worksheet specific' | Excel Discussion (Misc queries) | |||
Event macro that targets specific worksheet | Excel Discussion (Misc queries) | |||
Help with a macro to open to a specific worksheet | Excel Worksheet Functions |