Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() 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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thank you all. Worked perfectly.
|
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Call a function in some sheets | Excel Programming | |||
Can you call functions between sheets in the same book in excel? | Excel Worksheet Functions | |||
VBA code: call subprocedure | Excel Programming | |||
Code in one workbook to call code in another XL file | Excel Programming | |||
call VBA compiled code within vba | Excel Programming |