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列,但更改值没有将第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
为整个单元格块更改了值,因此进行了四次目标更改。
感谢。
答案 0 :(得分:0)
如何处理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
然后在完成后重新设置为True(不要忘记那部分!)