这里需要一点帮助。我对VBA相当陌生,我只是想出了此代码,并研究了其他代码并尝试对其进行研究。
我有两个标签:“数据”和“审核”。在“数据”选项卡中,我要复制“ c2:c1000”列中的值,并粘贴到“审计”选项卡的“ a1”列中。我有一段代码,每次我运行宏后,我都会在“数据”选项卡的“ c”列中随机分配值(我在那里很好)。现在,当我运行它时,我希望将新值复制并粘贴到“ b1”列中,因为“ a1”列已经具有来自先前宏运行的值。我想在每次运行宏时重复一次。同时在“审核”(Audit)选项卡中每个粘贴列的第1行上,我都会在运行宏时添加一个时间戳记。
这是我到目前为止所拥有的,
Dim x As Long
Dim lastRow As Long
lastRow = Worksheet("Data").Cells(3, Columns.Count).End(xlUp).Column
For x = 1 To lastRow
If Worksheets("Audit").Cells(2, "A") = "" Then
Worksheets("Data").Range("c2:c1000").Copy Destination:=Worksheets("Audit").Range(1, "A")
Sheets("Audit").Range("A1").Value = Format(Now, "mm/dd/yyyy HH:mm:ss")
Else
Worksheets("Data").Range("c2:c1000").Copy Destination:=Worksheets("Audit").Cells(2,
Columns.Count).End(xlToLeft).Offset(, 1)
'Sheets("Audit").Range("A1").Value = Format(Now, "mm/dd/yyyy HH:mm:ss") --> can't figure how to increment this as this will need to be on the subsequent empty column
End If
Next
End Sub
您的帮助将不胜感激!如果您还可以指导我理解您的逻辑,以便我更好地理解,那将非常有帮助。
谢谢。
与源工作表的LastRow
变量非常相似,为目标工作表创建一个LastColumn
变量,它将以与查找最后使用的行相同的方式查找最后使用的列。
例如:
Dim LastColumn As Long
LastColumn = Sheets("Audit").Cells(1, Columns.Count).End(xlToLeft).Column
然后像这样使用变量:
Destination:= Worksheets("Audit").Cells(1, LastColumn)
[您的代码似乎也与您的问题相矛盾,在您的问题中,您解释说数据将每次使用下一列写入第1行的审核表,但您的代码会在If
的第2行中查找值声明:
If Worksheets("Audit").Cells(2, "A") = "" Then
与If Worksheets("Audit").Range("A2") = "" Then
相同。
如果要检查第一行,请将2
更改为1
。