Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 110
Default Target Range Activation

Trying to get Wooksheet_Change to work:

Public rng As Range
Private Sub Workbook_Open()
Dim range1 As Range
Set range1 = Sheet4.Range("D4:F500")
Set rng = range1

'I need a way to access the subroutine Worksheet_Change
'to fire the object Target range. I tried:
'Worksheet_Change(rng) that didn't work.

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 563
Default Target Range Activation

This code works

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D4:F500")) Is Nothing Then
MsgBox "Cell in D4:F500 has be changed"
End If
End Sub

Remember it must be added to the Sheet model not the Genaeal module
One way is to right click the sheet's tab and select View Code

best wishes
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme

"Philosophaie" wrote in message
...
Trying to get Wooksheet_Change to work:

Public rng As Range
Private Sub Workbook_Open()
Dim range1 As Range
Set range1 = Sheet4.Range("D4:F500")
Set rng = range1

'I need a way to access the subroutine Worksheet_Change
'to fire the object Target range. I tried:
'Worksheet_Change(rng) that didn't work.

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Target Range Activation

The Worksheet_Change procedure MUST be located in the code module for
the worksheet whose changes you want to trap. Each worksheet whose
changes need to be trapped will have its own Change event procedure in
its own code module. If you have Worksheet_Change in the ThisWorkbook
module, VBA does not recognize it as an event procedure and the
procedure will not be called automatically. VBA sees is as just
another ordinary procedure.

If you want to trap changes for all sheets in the ThisWorkbook module,
use the workbook's SheetChange event:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
' your code here
End Sub

In this procedure, Sh references the worksheet on which the change
occurred, and Target references the cells on Sh that were changed.
This will trap changes on any sheet in the workbook (but not in other
workbooks).

For much more information about event procedures, see
http://www.cpearson.com/excel/Events.aspx .

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]




On Sun, 24 Jan 2010 13:13:01 -0800, Philosophaie
wrote:

Trying to get Wooksheet_Change to work:

Public rng As Range
Private Sub Workbook_Open()
Dim range1 As Range
Set range1 = Sheet4.Range("D4:F500")
Set rng = range1

'I need a way to access the subroutine Worksheet_Change
'to fire the object Target range. I tried:
'Worksheet_Change(rng) that didn't work.

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 110
Default Target Range Activation

I am trying to set the Target from the Workbook_Open subroutine so the
Worksheet_Change will fire when the cell in that range has been changed. I
need a way to get the object in Workbook_Open subroutine to set the object in
Worksheet_Change to initiallize Target range.


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 110
Default Target Range Activation



"Bernard Liengme" wrote:

This code works

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D4:F500")) Is Nothing Then
MsgBox "Cell in D4:F500 has be changed"
End If
End Sub

Remember it must be added to the Sheet model not the Genaeal module
One way is to right click the sheet's tab and select View Code

best wishes
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme


I already have this in my code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim trgt As Range
Dim intersect As Range
Set intersect = Application.intersect(trgt, Target)
If Not intersect Is Nothing Then
With Sheets("Sheet4")
For n = 2 To 500
Cells(n, 5) = .cell((n - 1), 5) + .cell(n, 6) - .cell(n, 4)
Next n
End With
End If
End Sub
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 110
Default Target Range Activation

I would like to set the Target from the Workbook_Open subroutine so the
Worksheet_Change will fire when the cell in that range has been changed. I
need a way to get the object in Workbook_Open subroutine to set the object in
Worksheet_Change to initiallize Target range.
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Target Range Activation



This has been answered several times. Do NOT (!) put your
Worksheet_Change code in the ThisWorkbook code module. It MUST reside
in the code module of the worksheet whose changes you want to trap.
You don't call Worksheet_Change directly; Excel calls it automatically
when a cell value is changed. It calls the Change event code that is
in its own code module. If you put Worksheet_Change in the
ThisWorkbook module, Excel doesn't recognize it as an event procedure
and will not execute it.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]



On Sun, 24 Jan 2010 14:54:01 -0800, Philosophaie
wrote:

I would like to set the Target from the Workbook_Open subroutine so the
Worksheet_Change will fire when the cell in that range has been changed. I
need a way to get the object in Workbook_Open subroutine to set the object in
Worksheet_Change to initiallize Target range.

  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 110
Default Target Range Activation

You have all my code. Why can't I figure out why the Worksheet_Change is not
firing when a cell in the range is manipulated? I do save and exit the
workbook before I run the updated program and I am using a xls file in Excel
2007.
  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Target Range Activation

In this code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim trgt As Range
Dim intersect As Range
Set intersect = Application.intersect(trgt, Target)
If Not intersect Is Nothing Then
With Sheets("Sheet4")
For n = 2 To 500
Cells(n, 5) = .cell((n - 1), 5) + .cell(n, 6) - .cell(n, 4)
Next n
End With
End If
End Sub

trgt is never set to anything.

Are you trying to pass that range from the workbook_open event to that sheet's
_change event?

If yes, you could create a new module (Insert|Module) and put this into the
module:

Option Explicit
Public trgt as range

Then in the ThisWorkbook module, change your workbook_open procedure to use that
public variable:

Private Sub Workbook_Open()
Set trgt = Sheet4.Range("D4:F500")

Since trgt is declared in a General Module, every procedure in every module can
see it.

Then make sure you delete the declaration in Sheet4's worksheet module. So the
code becomes:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myIntersect As Range 'don't use a variable named Intersect!
Dim N as long
Set myintersect = Application.intersect(trgt, Target)
If Not myintersect Is Nothing Then
With Me 'the sheet owning the code.
'stop this event from firing itself
application.enableevents = false
For n = 2 To 500
'added a leading dot to the first cells() reference
.Cells(n, 5) = .cell((n - 1), 5) + .cell(n, 6) - .cell(n, 4)
Next n
application.enableevents = true
End With
End If
End Sub

==========
If you wanted this event to fire each time you opened the workbook, then you
could just change a value to itself in the range you want to inspect.

In the ThisWorkbook module:

Private Sub Workbook_Open()
with sheet4
Set trgt = .Range("D4:F500")
with .range("d4")
.value = .value
end with
end with
End Sub

================
You could call the worksheet_Change event in sheet4 IF you make a change to the
procedure statement:

Private Sub Worksheet_Change(ByVal Target As Range)
becomes
Sub Worksheet_Change(ByVal Target As Range)

And the code would look like:

Private Sub Workbook_Open()
with sheet4
Set trgt = .Range("D4:F500")
Call .Worksheet_Change(Target:=.Range("d4"))
end with
End Sub





Philosophaie wrote:

"Bernard Liengme" wrote:

This code works

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D4:F500")) Is Nothing Then
MsgBox "Cell in D4:F500 has be changed"
End If
End Sub

Remember it must be added to the Sheet model not the Genaeal module
One way is to right click the sheet's tab and select View Code

best wishes
--
Bernard Liengme
Microsoft Excel MVP
http://people.stfx.ca/bliengme


I already have this in my code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim trgt As Range
Dim intersect As Range
Set intersect = Application.intersect(trgt, Target)
If Not intersect Is Nothing Then
With Sheets("Sheet4")
For n = 2 To 500
Cells(n, 5) = .cell((n - 1), 5) + .cell(n, 6) - .cell(n, 4)
Next n
End With
End If
End Sub


--

Dave Peterson


  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Target Range Activation

For the nth time, I will repeat that the Worksheet_Change event
procedure must NOT (!!!!!!!) be in the ThisWorkbook code module. If it
is, it will not be recognized by VBA and will not run when a cell
value is changed. The Worksheet_Change event MUST (!!!!!!) go in the
sheet module of the worksheet whose changes are to trapped. In Excel,
right-click on the tab of the sheet whose changes you want to trap,
and choose "View Code". Put your that code module. Again, do NOT (!)
put the Worksheet_Change event code in the ThisWorkbook module.

Maybe you don't understand what events are. See
http://www.cpearson.com/excel/Events.aspx for much more detail about
events, how they work, and how to code them.

Finally, again, do NOT put the Worksheet_Change event in the
ThisWorkbook module. This will NOT work.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]



On Sun, 24 Jan 2010 17:59:01 -0800, Philosophaie
wrote:

You have all my code. Why can't I figure out why the Worksheet_Change is not
firing when a cell in the range is manipulated? I do save and exit the
workbook before I run the updated program and I am using a xls file in Excel
2007.

  #12   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,522
Default Target Range Activation

Chip
Remember the Paul Newman movie "Cool hand Luke" and the guard said to Luke,
"What we have here is a failure to cummunikate (sp)
--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Chip Pearson" wrote in message
...
For the nth time, I will repeat that the Worksheet_Change event
procedure must NOT (!!!!!!!) be in the ThisWorkbook code module. If it
is, it will not be recognized by VBA and will not run when a cell
value is changed. The Worksheet_Change event MUST (!!!!!!) go in the
sheet module of the worksheet whose changes are to trapped. In Excel,
right-click on the tab of the sheet whose changes you want to trap,
and choose "View Code". Put your that code module. Again, do NOT (!)
put the Worksheet_Change event code in the ThisWorkbook module.

Maybe you don't understand what events are. See
http://www.cpearson.com/excel/Events.aspx for much more detail about
events, how they work, and how to code them.

Finally, again, do NOT put the Worksheet_Change event in the
ThisWorkbook module. This will NOT work.

Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]



On Sun, 24 Jan 2010 17:59:01 -0800, Philosophaie
wrote:

You have all my code. Why can't I figure out why the Worksheet_Change is
not
firing when a cell in the range is manipulated? I do save and exit the
workbook before I run the updated program and I am using a xls file in
Excel
2007.


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
Sum Range of Cells to a Target Value [email protected] Excel Programming 5 June 15th 07 02:46 AM
Target As Excel.Range or Target As Range Piranha[_5_] Excel Programming 2 June 3rd 05 03:49 PM
Ranges:Target in Worksheet_SelectionChange(ByVal Target As Range) Kevin McCartney Excel Programming 3 April 15th 05 01:51 PM
ByVal Target As Range monir Excel Programming 4 April 12th 05 04:37 PM
what does (ByVal Target As Range) mean Zygoid[_7_] Excel Programming 6 January 31st 04 05:08 PM


All times are GMT +1. The time now is 10:35 PM.

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"