Изменить на 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
затем вернитесь к Истине, когда закончите (не забудьте эту часть!)