Question

Cells(R, DataCol).Resize(, ColumnCount).Copy
Cells(R, DataCol).Offset(RowOffset * (R - StartRow), ColOffset).PasteSpecial xlValues

Hey all, When I use the above code running from a module, it triggers a change by val written in the worksheet

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 15 Then
  Target.Offset(0, 1).Value = Now()
  End If
End Sub

Now the Cells part of the code is copying a block of four cells to column 12, reaching until column 15, but the change val isn't recognizing the 15th column as having a changed value. However when I change the target column to 11,

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 11 Then
   Target.Offset(0, 1).Value = Now()
   End If
End Sub  

the value is changed for the entire block of cells so four target changes are made.

Thanks.

Was it helpful?

Solution

How to process Target to account for >1 cell in the range:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c as Range

For each c in Target.cells
    If c.Column = 11 Then
       c.Offset(0, 1).Value = Now()
    End If
Next c

End Sub  

or:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng as Range

Set rng = Application.Intersect(Target, Me.Columns(11))
If not rng is nothing then
    rng.Offset(0, 1).Value = Now()
End If

End Sub 

Also a good idea to disable events before you update the spreadsheet from your Change sub (otherwise you just re-trigger the event with your update). Use

 Application.EnableEvents=False 

then set back to True when done (don't forget that part!)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top