从Macro复制数据时,需要在另一个单元格中设置Now Function功能

时间:2015-09-30 21:11:53

标签: excel cell

我有这个宏从剪贴板获取数据并将其粘贴到特定的单元格中转置一些信息。

Sub UpdateData()

        '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet2")

      With ws
        '~~> Using this as you are copying it from Notepad~~~~
        .Activate
        .Range("H1").Select
        .PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
        '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Worksheets("Sheet2").Range("H1" & ",H3").Copy
Sheets("Sheet2").Range("C" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Transpose:=True

'~~Clear data content~~~~~~~~~~~~~~~~~~~~~~~~~
Range("H1:H10").ClearContents

End With

End Sub

我需要这个宏来更新使用NOW公式更新(C)的行旁边的单元格B.

我有另一个宏,它会在更新行C时更新行B,但它们不能一起工作。

Sub Worksheet_Change(ByVal Target As Range)
Application.MoveAfterReturn = True
If Target.Count = 1 Then
  If Not Intersect(Target, Range("C1:C1000")) Is Nothing Then
    Cells(Target.Row, "B") = Now
  End If
End If
End Sub

关于我该怎么做的任何想法?

1 个答案:

答案 0 :(得分:0)

目标是已更改并触发Worksheet_Change事件宏的一个或多个单元格。在您的情况下,这是多个单元格,因此您必须单独处理每个单元格。

Sub Worksheet_Change(ByVal Target As Range)
    Application.MoveAfterReturn = True
    If Not Intersect(Target, Range("C1:C1000")) Is Nothing Then
        On Error GoTo bm_Safe_Exit
        Application.EnableEvents = False
        Dim c As Range
        For Each c In Intersect(Target, Range("C1:C1000"))
            Cells(c.Row, "B") = Now
        Next c
      End If
bm_Safe_Exit:
    Application.EnableEvents = True
End Sub

在您将数据更改(添加timerstamp)到工作表时关闭事件处理,否则您将触发Worksheet_Change在其自身上运行。

在确定C1:C1000范围内的一个或多个单元格已被更改后,For Each ... Next Statement循环遍历每个单元格并在该行的B列上存储时间戳。