Изменить на Val, цель как диапазон не распознается

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

Привет всем, когда я использую приведенный выше код, запущенный из модуля, он вызывает изменение на val, записанное в листе

Private Sub Worksheet_Change(ByVal Target As Range)

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

Теперь часть кода Cells копирует блок из четырех ячеек в столбец 12, доходя до столбца 15, но переменная val не распознает 15-й столбец как имеющий измененное значение. Однако, когда я изменяю целевой столбец на 11,

Private Sub Worksheet_Change(ByVal Target As Range)

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

значение изменяется для всего блока ячеек, поэтому делаются четыре изменения цели.

Благодарю.

1 ответ

Решение

Как обработать Target для учета>1 ячейки в диапазоне:

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  

или же:

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 

Также хорошей идеей будет отключение событий перед обновлением электронной таблицы из подпрограммы "Изменить" (в противном случае вы просто повторно инициируете событие при обновлении). использование

 Application.EnableEvents=False 

затем вернитесь к Истине, когда закончите (не забудьте эту часть!)

Другие вопросы по тегам