ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Edit MACRO for all SHEETS (https://www.excelbanter.com/excel-programming/295218-edit-macro-all-sheets.html)

DAA[_2_]

Edit MACRO for all SHEETS
 
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks





Frank Kabel

Edit MACRO for all SHEETS
 
Hi
as this is an event procedure on worksheet level you have to insert
this procedure in every worksheet module.
You may take a look at the following add-in:
http://www.cpearson.com/excel/RowLiner.htm

Just a note: Using this add-in will disable the Undo functionality of
your workbook.


--
Regards
Frank Kabel
Frankfurt, Germany


DAA wrote:
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks



Nigel[_8_]

Edit MACRO for all SHEETS
 
Not entirely an answer but at least the following method means a common
procedure can be modified which then applies to all sheets with the smaller
(common) code behind each sheet

I put your code into a module (respecify as a Public procedure not Private)
and changed the parameter as shown

Public OldRng As Range
Public Sub WSChange(Target)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

I then put the following code behind each worksheet (same for all
worksheets) where you wish this to apply .......

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call WSChange(Target)
End Sub

If you allow users to create new worksheets then the module needs another
procedure to automatically populate the above code behind it, which would be
initiated by a workbook level event.

Cheers
Nigel

"DAA" wrote in message
...
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks







Bob Phillips[_6_]

Edit MACRO for all SHEETS
 
Hi DAA,

Excel also provides workbook wide sheet events. So put this code in the
ThisWorkbook code module

Public OldRng

Private Sub Workbook_Open()
ReDim OldRng(20) 'allow for upto 20 worksheets
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
Dim ThisRng

On Error Resume Next
Set ThisRng = OldRng(Sh.Index)
If Not ThisRng Is Nothing Then
ThisRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng(Sh.Index) = Target

End Sub


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"DAA" wrote in message
...
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks







DAA[_2_]

Edit MACRO for all SHEETS
 
Hi Bob,

I copied and pasted the 2 macros you provided in the
WORKBOOK module. It gave me an error message "invalid
Outside procedure". It high-lighted the "ReDim OldRng(20)"

Can you please take a look again? Thanks.

Regards,
DAA


-----Original Message-----
Hi DAA,

Excel also provides workbook wide sheet events. So put

this code in the
ThisWorkbook code module

Public OldRng

Private Sub Workbook_Open()
ReDim OldRng(20) 'allow for upto 20 worksheets
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As

Object, ByVal Target
As Range)
Dim ThisRng

On Error Resume Next
Set ThisRng = OldRng(Sh.Index)
If Not ThisRng Is Nothing Then
ThisRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng(Sh.Index) = Target

End Sub


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"DAA" wrote in

message
...
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without

pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks






.


DAA[_2_]

Edit MACRO for all SHEETS
 
Hi Bob,
It's working perfectly! Please disregard my previous
posting.
Thank you for your time and effort.
Regards,
DAA
-----Original Message-----
Hi DAA,

Excel also provides workbook wide sheet events. So put

this code in the
ThisWorkbook code module

Public OldRng

Private Sub Workbook_Open()
ReDim OldRng(20) 'allow for upto 20 worksheets
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As

Object, ByVal Target
As Range)
Dim ThisRng

On Error Resume Next
Set ThisRng = OldRng(Sh.Index)
If Not ThisRng Is Nothing Then
ThisRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng(Sh.Index) = Target

End Sub


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"DAA" wrote in

message
...
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without

pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks






.


Bob Phillips[_6_]

Edit MACRO for all SHEETS
 
Phew! Had me worried there.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"DAA" wrote in message
...
Hi Bob,
It's working perfectly! Please disregard my previous
posting.
Thank you for your time and effort.
Regards,
DAA
-----Original Message-----
Hi DAA,

Excel also provides workbook wide sheet events. So put

this code in the
ThisWorkbook code module

Public OldRng

Private Sub Workbook_Open()
ReDim OldRng(20) 'allow for upto 20 worksheets
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As

Object, ByVal Target
As Range)
Dim ThisRng

On Error Resume Next
Set ThisRng = OldRng(Sh.Index)
If Not ThisRng Is Nothing Then
ThisRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng(Sh.Index) = Target

End Sub


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"DAA" wrote in

message
...
The macro below changes the cell pointer color. However,
it only works on A sheet in a workbook. I need the macro
to work in ALL the sheets in the workbook without

pasting
the macro on all worksheet modules.

Public OldRng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
If Not OldRng Is Nothing Then
OldRng.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 6
Set OldRng = Target
End Sub

Please edit MACRO to work on all sheets. Thanks






.





All times are GMT +1. The time now is 05:08 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com