Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Workbook_SheetChange won't run

My understanding of Workbook_SheetChange is that with ANY change ANYWHERE in
the workbook, the code runs, correct? I can't get it to work and don't know
why:

GOAL: Resort the "PatientNamesRooms" (just a list of about 60 names and
associated hospital room numbers) whenever a change is made on a different
tab within the workbook. Cells in "PatientNamesRooms" are index formulas
that get names based on room numbers from a main roster of names. We need to
quickly find the name alphabetically to determine what room they're in.

I've gotten the code to run (names to sort) using Worksheet SelectionChange.
But that doesn't meet my need. It needs to resort anytime someone updates a
name in the roster (like when a patient leaves or is admitted on the floor).

CODE THAT WON'T RUN:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Range("PatientNamesRooms").Select Selection.Sort Key1:=Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal

End Sub

Help?
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Workbook_SheetChange won't run

Where have you got that code. Based on the format it shouwl be in
ThisWorkBook. Even then it is not going to work but it should be throwing an
error. Try this...
Right click the XL icon in the upper left corner of the screen next to File
and select view code. Paste the following...

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo ErrorHandler
Application.EnableEvents = False
With Sheets("Sheet3") '***change me***
.Range("PatientNamesRooms").Sort Key1:=.Range("A2"), Order1:=xlAscending, _
Header:=xlYes
End With
ErrorHandler:
MsgBox Err.Description
Application.EnableEvents = True
End Sub

Note that you need to change the sheet reference to the sheet that the named
range is on. That is because even though the named range is global code in
the ThisWorkbook module acts on the active sheet which may not be the sheet
you want sorted... Also I changed your sor a little bit to get rid of the
xlGuess parameter. You should use xlYes or xlNo as they are less prone to
mistakes.
--
HTH...

Jim Thomlinson


"XL Novice DD..." wrote:

My understanding of Workbook_SheetChange is that with ANY change ANYWHERE in
the workbook, the code runs, correct? I can't get it to work and don't know
why:

GOAL: Resort the "PatientNamesRooms" (just a list of about 60 names and
associated hospital room numbers) whenever a change is made on a different
tab within the workbook. Cells in "PatientNamesRooms" are index formulas
that get names based on room numbers from a main roster of names. We need to
quickly find the name alphabetically to determine what room they're in.

I've gotten the code to run (names to sort) using Worksheet SelectionChange.
But that doesn't meet my need. It needs to resort anytime someone updates a
name in the roster (like when a patient leaves or is admitted on the floor).

CODE THAT WON'T RUN:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Range("PatientNamesRooms").Select Selection.Sort Key1:=Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal

End Sub

Help?

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Workbook_SheetChange won't run

The posted code should be in thisworkbook. It has reference to "sh as object"
and from the description it should run on any change to any sheet.
--
HTH...

Jim Thomlinson


"Don Guillett" wrote:

Try putting in the worksheet_change event in the SHEET module

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"XL Novice DD..." <XL Novice wrote in
message ...
My understanding of Workbook_SheetChange is that with ANY change ANYWHERE
in
the workbook, the code runs, correct? I can't get it to work and don't
know
why:

GOAL: Resort the "PatientNamesRooms" (just a list of about 60 names and
associated hospital room numbers) whenever a change is made on a different
tab within the workbook. Cells in "PatientNamesRooms" are index formulas
that get names based on room numbers from a main roster of names. We need
to
quickly find the name alphabetically to determine what room they're in.

I've gotten the code to run (names to sort) using Worksheet
SelectionChange.
But that doesn't meet my need. It needs to resort anytime someone updates
a
name in the roster (like when a patient leaves or is admitted on the
floor).

CODE THAT WON'T RUN:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As
Range)
Range("PatientNamesRooms").Select Selection.Sort Key1:=Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal

End Sub

Help?



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Workbook_SheetChange won't run

So you're sorting a single range on a (possibly) different worksheet no matter
where you make a change to any worksheet?

If that's true, I'd specify the worksheet with the range named PatientNamesRooms
and drop the .select stuff.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
with me.worksheets("somesheetnamehere").Range("PatientN amesRooms")
.Sort Key1:=.columns(1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal
end with
End Sub

The only way I can think of where this is better than using the
worksheet_activate event for that "somesheetnamehere" sheet is if you have
multiple windows open and you're making changes in one window and want to see
the sort reflected immediately on the other window.

The worksheet_activate event would fire when the user selected the sheet. It
sounds perfect to me.

Or do you have a better reason (more curious than anything).

XL Novice DD... wrote:

My understanding of Workbook_SheetChange is that with ANY change ANYWHERE in
the workbook, the code runs, correct? I can't get it to work and don't know
why:

GOAL: Resort the "PatientNamesRooms" (just a list of about 60 names and
associated hospital room numbers) whenever a change is made on a different
tab within the workbook. Cells in "PatientNamesRooms" are index formulas
that get names based on room numbers from a main roster of names. We need to
quickly find the name alphabetically to determine what room they're in.

I've gotten the code to run (names to sort) using Worksheet SelectionChange.
But that doesn't meet my need. It needs to resort anytime someone updates a
name in the roster (like when a patient leaves or is admitted on the floor).

CODE THAT WON'T RUN:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Range("PatientNamesRooms").Select Selection.Sort Key1:=Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal

End Sub

Help?


--

Dave Peterson


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Workbook_SheetChange won't run

Wow! Once I eliminate stupid little coding oversites (like inadvertantly
duplicating the 1st line when copying your code), this WORKED GREAT! And
yes, I want this to re-alphabetize with ANY entry in the workbook, not just
when this sheet is selected. Several other sheets need to adjust to the
alphabetized list so when THEY'RE selected, they will always be current. And
Thanks for clueing me in to that XL button. I never knew it was active.
Always thought it decorative. Wow! DD...

"Dave Peterson" wrote:

So you're sorting a single range on a (possibly) different worksheet no matter
where you make a change to any worksheet?

If that's true, I'd specify the worksheet with the range named PatientNamesRooms
and drop the .select stuff.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
with me.worksheets("somesheetnamehere").Range("PatientN amesRooms")
.Sort Key1:=.columns(1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal
end with
End Sub

The only way I can think of where this is better than using the
worksheet_activate event for that "somesheetnamehere" sheet is if you have
multiple windows open and you're making changes in one window and want to see
the sort reflected immediately on the other window.

The worksheet_activate event would fire when the user selected the sheet. It
sounds perfect to me.

Or do you have a better reason (more curious than anything).

XL Novice DD... wrote:

My understanding of Workbook_SheetChange is that with ANY change ANYWHERE in
the workbook, the code runs, correct? I can't get it to work and don't know
why:

GOAL: Resort the "PatientNamesRooms" (just a list of about 60 names and
associated hospital room numbers) whenever a change is made on a different
tab within the workbook. Cells in "PatientNamesRooms" are index formulas
that get names based on room numbers from a main roster of names. We need to
quickly find the name alphabetically to determine what room they're in.

I've gotten the code to run (names to sort) using Worksheet SelectionChange.
But that doesn't meet my need. It needs to resort anytime someone updates a
name in the roster (like when a patient leaves or is admitted on the floor).

CODE THAT WON'T RUN:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Range("PatientNamesRooms").Select Selection.Sort Key1:=Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal

End Sub

Help?


--

Dave Peterson

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
Workbook_SheetChange masterphilch Excel Programming 5 January 19th 06 08:35 PM
Workbook_SheetChange not working RAP Excel Programming 7 August 27th 05 04:40 PM
Workbook_SheetChange Matt B[_3_] Excel Programming 3 April 25th 05 01:40 PM
workbook_sheetchange JulieD Excel Programming 1 June 14th 04 04:32 AM
Workbook_SheetChange will not fire Robert Willard Excel Programming 1 September 10th 03 07:52 PM


All times are GMT +1. The time now is 11:53 PM.

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

About Us

"It's about Microsoft Excel"