0
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  

整个单元格块的值都会更改,因此进行了四个目标更改。

谢谢。

4

1 回答 1

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 (不要忘记那部分!)

于 2013-06-18T16:29:35.777 回答