Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 24
Default call code for all sheets

Through browsing this group, I have been able to apply code to all the
sheets in my workbook with the following test code.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address < "$E$2" Then Exit Sub

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
sh.Range("G2") = "test worked"
Next

End Sub
'--------------------------------------------------------------------------------------------

Is there any way to call a sub to all worksheets. I've tried
replaceing the SH.RANGE line with CALL TEST and it did not apply it to
all sheets. I've tried using WITH statements as follows:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address < "$E$2" Then Exit Sub

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
with sh
call test
end with
Next

End Sub

This did not work either. Any suggestions?

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default call code for all sheets

sh is your worksheet object, but call test needs to know which sheet. Try this

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
with sh
call test(sh)
end with
Next sh

Sub Test(sh as worksheet)
msgbox sh.name
end sub
--
HTH...

Jim Thomlinson


"rwnelson" wrote:

Through browsing this group, I have been able to apply code to all the
sheets in my workbook with the following test code.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address < "$E$2" Then Exit Sub

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
sh.Range("G2") = "test worked"
Next

End Sub
'--------------------------------------------------------------------------------------------

Is there any way to call a sub to all worksheets. I've tried
replaceing the SH.RANGE line with CALL TEST and it did not apply it to
all sheets. I've tried using WITH statements as follows:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address < "$E$2" Then Exit Sub

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
with sh
call test
end with
Next

End Sub

This did not work either. Any suggestions?


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 24
Default call code for all sheets

Thank you for your response. I put in the code and got the message box
on each sheet that stated the sheet name but when I tried to put in
something like range("G2") = "test worked" - only sheet 1 received the
changes, sheets 2 and 3 did not. Am I missing something? I tried the
two codes below.

Sub Test(sh As Worksheet)
MsgBox sh.Name
Range("G2") = "test worked"
End Sub
'__________________________

Sub Test(sh As Worksheet)
Range("G2") = "test worked"
End Sub

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default call code for all sheets


You need to tell it to run it on each sheet. your current macro is onl
set for the active sheet.

Yours:
Sub Test(sh As Worksheet)
Range("G2") = "test worked"
End Sub

Correct:
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("G2") = "test worked"
Next
End Sub






rwnelson Wrote:
Thank you for your response. I put in the code and got the message box
on each sheet that stated the sheet name but when I tried to put in
something like range("G2") = "test worked" - only sheet 1 received the
changes, sheets 2 and 3 did not. Am I missing something? I tried the
two codes below.

Sub Test(sh As Worksheet)
MsgBox sh.Name
Range("G2") = "test worked"
End Sub
'__________________________

Sub Test(sh As Worksheet)
Range("G2") = "test worked"
End Su


--
dok11
-----------------------------------------------------------------------
dok112's Profile: http://www.excelforum.com/member.php...fo&userid=1058
View this thread: http://www.excelforum.com/showthread.php?threadid=52935

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default call code for all sheets

Unless otherwise specified code always executes on the active sheet. That
being the case, the only thing you are missing is a reference to sh. Try
this...

Sub Test(sh As Worksheet)
sh.Range("G2") = "test worked"
End Sub

--
HTH...

Jim Thomlinson


"rwnelson" wrote:

Thank you for your response. I put in the code and got the message box
on each sheet that stated the sheet name but when I tried to put in
something like range("G2") = "test worked" - only sheet 1 received the
changes, sheets 2 and 3 did not. Am I missing something? I tried the
two codes below.

Sub Test(sh As Worksheet)
MsgBox sh.Name
Range("G2") = "test worked"
End Sub
'__________________________

Sub Test(sh As Worksheet)
Range("G2") = "test worked"
End Sub




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 24
Default call code for all sheets

Thank you all. Worked perfectly.

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Call a function in some sheets henpat Excel Programming 1 January 30th 06 01:23 PM
Can you call functions between sheets in the same book in excel? Arenlor Excel Worksheet Functions 3 January 7th 06 03:21 AM
VBA code: call subprocedure Terry Excel Programming 5 December 14th 05 04:49 AM
Code in one workbook to call code in another XL file [email protected] Excel Programming 2 August 1st 05 03:37 PM
call VBA compiled code within vba Les[_5_] Excel Programming 1 September 26th 03 06:27 PM


All times are GMT +1. The time now is 07:19 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"