Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从宏复制数据时,需要在另一个单元格中设置Now函数_Excel_Cell - Fatal编程技术网

Excel 从宏复制数据时,需要在另一个单元格中设置Now函数

Excel 从宏复制数据时,需要在另一个单元格中设置Now函数,excel,cell,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

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

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

有什么想法吗?

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

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)时关闭事件处理,否则将触发工作表\u更改在其自身上运行


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

单元格(Target.row,“B”).Formula=“=NOW()”
感谢您的帮助!如果我将目标从C1更改为;C1000到H1?第一次从剪贴板粘贴到宏UpdateData中的哪个?另一件事,两个宏单独工作都很好,但是当我尝试统一它们时,当我触发UpdateData时,它会填充单元格C和D,并将现在的结果粘贴到单元格B中。它们不工作,我真的不知道你想用其他过程完成什么。当您使用
.Range(“H1”和“H3”)
时,您是要复制H1、H2和H3还是仅复制H1和H3?字符串串联是完全不必要的。此外,您还转置了应该将其放入一行的粘贴,但您正试图在一列中获取对C列的所有更改。我很难理解你到底想做什么。这就是我需要的一个例子。我们收到一个数据列表,用户名;用户标识;gpn;国家。这些字段从另一个应用程序(如列表)复制到剪贴板。所以在H1中有用户名,H2用户名,H3 gpn,H4国家。我们只需要C单元格中的用户名和它旁边的D单元格中的GPN。这就是宏更新数据的作用。当它将数据复制到C和D单元时,我需要它在B单元中使用NOW函数设置时间戳。这更清楚吗?很抱歉