Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 391
Default Change Event (How post Date/Time to Changed Cells Rows but different Column)



Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub


Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Change Event (How post Date/Time to Changed Cells Rows butdifferent Column)

You could loop through the cells in the range that changed (limited to just the
range you're interested in, too).

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myIntersect As Range
Dim myCell As Range
Dim myRngToCheck As Range

Set myRngToCheck = Me.Range("A1:A5") 'the area I care about

Set myIntersect = Intersect(Target, myRngToCheck)

If myIntersect Is Nothing Then
Exit Sub 'outside my range
End If

Application.EnableEvents = False
For Each myCell In myIntersect.Cells
With Me.Cells(myCell.Row, "H")
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub


wrote:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub

Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Change Event (How post Date/Time to Changed Cells Rows but different Column)

Not sure I understand the post (very confusing!) and do you mean "A1:A5" or
"A1:A5, A8"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Const cAdr As String = "A1:A5, A8"

On Error Resume Next
Set rng = Intersect(Range(cAdr), Target)
On Error GoTo errExit

If Not rng Is Nothing Then
'MsgBox "Intersect changed " & rng.Address
rng.Offset(, 7).Value = Now
End If


Exit Sub
errExit:
End Sub

Regards,
Peter T


wrote in message
...


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub


Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows
in Column "H"?

TIA EagleOne



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 391
Default Change Event (How post Date/Time to Changed Cells Rows but different Column)

Sorry for the confusion. I added A8 to the "mix" to throw in the concept of non-contiguous range.

In reality, A1:A5, A8 could be any cells in the worksheet.

Therefore the range is Target.Address. Where the Column to post the Date/Time is fixed but the
Target.Address Rows.

I hope I cleared it up.

Thanks for your time and knowledge. EagleOne

"Peter T" <peter_t@discussions wrote:

Not sure I understand the post (very confusing!) and do you mean "A1:A5" or
"A1:A5, A8"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Const cAdr As String = "A1:A5, A8"

On Error Resume Next
Set rng = Intersect(Range(cAdr), Target)
On Error GoTo errExit

If Not rng Is Nothing Then
'MsgBox "Intersect changed " & rng.Address
rng.Offset(, 7).Value = Now
End If


Exit Sub
errExit:
End Sub

Regards,
Peter T


wrote in message
.. .


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub


Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows
in Column "H"?

TIA EagleOne


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 391
Default Change Event (How post Date/Time to Changed Cells Rows but different Column)

Dave, I was not real clear.

That said I know how to proceed.

In actuality, it is only the Target.Address cells (Rows) that I need to isolate.
Not specifically Range("A1:A5") which was used as a example.

Thanks EagleOne

Dave Peterson wrote:

You could loop through the cells in the range that changed (limited to just the
range you're interested in, too).

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myIntersect As Range
Dim myCell As Range
Dim myRngToCheck As Range

Set myRngToCheck = Me.Range("A1:A5") 'the area I care about

Set myIntersect = Intersect(Target, myRngToCheck)

If myIntersect Is Nothing Then
Exit Sub 'outside my range
End If

Application.EnableEvents = False
For Each myCell In myIntersect.Cells
With Me.Cells(myCell.Row, "H")
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub


wrote:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub

Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Change Event (How post Date/Time to Changed Cells Rows butdifferent Column)

I don't understand.

If you want the row of each cell in the target, you could loop through the
cells.

If you want the starting row of the first area in the target, you could loop
through the areas.

msgbox target.areas(1).row

Or the first row in each area:

Dim myArea as range
for each myarea in target.areas
msgbox myarea.row
next myarea

wrote:

Dave, I was not real clear.

That said I know how to proceed.

In actuality, it is only the Target.Address cells (Rows) that I need to isolate.
Not specifically Range("A1:A5") which was used as a example.

Thanks EagleOne

Dave Peterson wrote:

You could loop through the cells in the range that changed (limited to just the
range you're interested in, too).

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myIntersect As Range
Dim myCell As Range
Dim myRngToCheck As Range

Set myRngToCheck = Me.Range("A1:A5") 'the area I care about

Set myIntersect = Intersect(Target, myRngToCheck)

If myIntersect Is Nothing Then
Exit Sub 'outside my range
End If

Application.EnableEvents = False
For Each myCell In myIntersect.Cells
With Me.Cells(myCell.Row, "H")
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub


wrote:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub

Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne


--

Dave Peterson
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 391
Default Change Event (How post Date/Time to Changed Cells Rows but different Column)

Dave I just realized that you had a question,

The solution via your help was:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'
'
Dim myCell As Range
Dim myRange As Range
Dim myTime As String

Set myRange = Range(Target.Address)
'Debug.Print "Cells Changed: " & myRange.Address
Application.EnableEvents = False
myTime = Now()
For Each myCell In myRange
With Me.Cells(myCell.Row, "O")
'.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = myTime
End With
Next myCell
Application.EnableEvents = True
End Sub


Thanks Dave
Dave Peterson wrote:

I don't understand.

If you want the row of each cell in the target, you could loop through the
cells.

If you want the starting row of the first area in the target, you could loop
through the areas.

msgbox target.areas(1).row

Or the first row in each area:

Dim myArea as range
for each myarea in target.areas
msgbox myarea.row
next myarea

wrote:

Dave, I was not real clear.

That said I know how to proceed.

In actuality, it is only the Target.Address cells (Rows) that I need to isolate.
Not specifically Range("A1:A5") which was used as a example.

Thanks EagleOne

Dave Peterson wrote:

You could loop through the cells in the range that changed (limited to just the
range you're interested in, too).

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myIntersect As Range
Dim myCell As Range
Dim myRngToCheck As Range

Set myRngToCheck = Me.Range("A1:A5") 'the area I care about

Set myIntersect = Intersect(Target, myRngToCheck)

If myIntersect Is Nothing Then
Exit Sub 'outside my range
End If

Application.EnableEvents = False
For Each myCell In myIntersect.Cells
With Me.Cells(myCell.Row, "H")
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub


wrote:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub

Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Change Event (How post Date/Time to Changed Cells Rows butdifferent Column)

Set myRange = Range(Target.Address)
'Debug.Print "Cells Changed: " & myRange.Address
Application.EnableEvents = False
myTime = Now()
For Each myCell In myRange

You don't need that myRange variable. Or the Set command.
For Each myCell In target.cells
(I like the .cells property. I find it self-documenting.)

So you're looking for a change in any old cell in the worksheet? It doesn't
matter what column the change is made in (or what columns the changes are made
in)?

And if you change a bunch of areas,
$B$5:$L$11,$T$8:$Z$13,$AD$6:$AK$9,$AJ$12:$AP$18,$S $17:$T$23,$Y$20:$AE$25,
$AS$22:$AY$30,$F$26:$J$30,$H$15:$L$20,$K$34:$K$36, $R$34,$R$34:$AA$37
(in one fell swoop--like clearing the contents or using ctrl-enter to fill the
cells)

You'll be processing all 418 cells--even though you've only changed 30 rows
(5:30,34:37).

If you wanted, you could limit the range and just use that to determine the rows
that changed.

Here's one that may get you started (I just posted this for a different
question):

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRngToChk As Range
Dim myIntersect As Range
Dim myOneColRng As Range
Dim myCell As Range

Set myRngToChk = Me.Range("A5:cb3000") 'me.cells 'for all the cells

Set myIntersect = Intersect(Target, myRngToChk)

If myIntersect Is Nothing Then
Exit Sub
End If

'just one cell per row that got a change
Set myOneColRng = Intersect(myIntersect.EntireRow, Me.Columns(1))

Application.EnableEvents = False
For Each myCell In myOneColRng.Cells
With Me.Cells(myCell.Row, "O")
.NumberFormat = "dd-mmmm-yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub





wrote:

Dave I just realized that you had a question,

The solution via your help was:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'
'
Dim myCell As Range
Dim myRange As Range
Dim myTime As String

Set myRange = Range(Target.Address)
'Debug.Print "Cells Changed: " & myRange.Address
Application.EnableEvents = False
myTime = Now()
For Each myCell In myRange
With Me.Cells(myCell.Row, "O")
'.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = myTime
End With
Next myCell
Application.EnableEvents = True
End Sub

Thanks Dave
Dave Peterson wrote:

I don't understand.

If you want the row of each cell in the target, you could loop through the
cells.

If you want the starting row of the first area in the target, you could loop
through the areas.

msgbox target.areas(1).row

Or the first row in each area:

Dim myArea as range
for each myarea in target.areas
msgbox myarea.row
next myarea

wrote:

Dave, I was not real clear.

That said I know how to proceed.

In actuality, it is only the Target.Address cells (Rows) that I need to isolate.
Not specifically Range("A1:A5") which was used as a example.

Thanks EagleOne

Dave Peterson wrote:

You could loop through the cells in the range that changed (limited to just the
range you're interested in, too).

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myIntersect As Range
Dim myCell As Range
Dim myRngToCheck As Range

Set myRngToCheck = Me.Range("A1:A5") 'the area I care about

Set myIntersect = Intersect(Target, myRngToCheck)

If myIntersect Is Nothing Then
Exit Sub 'outside my range
End If

Application.EnableEvents = False
For Each myCell In myIntersect.Cells
With Me.Cells(myCell.Row, "H")
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
.Value = Now
End With
Next myCell
Application.EnableEvents = True

End Sub


wrote:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "Range " & Target.Address & " was changed."
End Sub

Using the above Sub:

Facts: Range("A1:A5") values have been changed

Goal: Need VBA to change Range("H1:H5") with Now()

Challenge: What if more than one cell is changed?

In short, if Target.Address = Range("A1:A5, A8")
What VBA code would change Target.Address Rows 1,2,3,4,5,8 but same rows in Column "H"?

TIA EagleOne


--

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
Change color of rows every time value in first column changes Natasha Excel Worksheet Functions 5 April 22nd 23 12:10 PM
Workbook change event when tab color changed? David Billigmeier Excel Programming 1 October 17th 08 10:13 PM
Change colour of cells when content is altered/changed BUT NOT TO INSERTED OR DELETED ROWS Martin ©¿©¬ @nohere.net Excel Discussion (Misc queries) 3 April 12th 08 05:13 PM
I had template that when you changed date of the event, it automa. BJSilkwood Excel Worksheet Functions 1 April 16th 05 07:57 PM
Code - if T changed, change date in W to date it is changed Sandy[_3_] Excel Programming 2 July 27th 03 05:33 PM


All times are GMT +1. The time now is 11:48 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"