我有这个宏从剪贴板获取数据并将其粘贴到特定的单元格中转置一些信息。
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
关于我该怎么做的任何想法?
答案 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列上存储时间戳。