VBA(宏)复制和粘贴

VBA(宏)复制和粘贴,vba,copy-paste,Vba,Copy Paste,我正在尝试创建一个宏,它允许我在每次激活时复制工作表1中某个单元格的值(同一个单元格,但在计算后可能会有不同的结果),并将这些结果的值粘贴到工作表2中(可能在A1;A2;A3;中)。每次我进行计算时这是我编写的一段代码示例,但它不起作用: Sub recorder() If Cells(B, i) <> Empty Then i = i + 1 Worksheets(1).Select Cells(A1).Copy Worksheets(2).Select Cells(B, i)

我正在尝试创建一个宏,它允许我在每次激活时复制工作表1中某个单元格的值(同一个单元格,但在计算后可能会有不同的结果),并将这些结果的值粘贴到工作表2中(可能在A1;A2;A3;中)。每次我进行计算时这是我编写的一段代码示例,但它不起作用:

Sub recorder()

If Cells(B, i) <> Empty Then
i = i + 1
Worksheets(1).Select
Cells(A1).Copy
Worksheets(2).Select
Cells(B, i) = Cells(A1)
End If
End Sub
子记录器()
如果单元格(B,i)为空,则
i=i+1
工作表(1)。选择
单元格(A1)。复制
工作表(2)。选择
单元(B,i)=单元(A1)
如果结束
端接头

任何帮助都将不胜感激。谢谢

将此粘贴到此工作簿中。 无论您如何更改Sheet1上单元格A1中的值,它都会显示在Sheet2上A列中最近的空白单元格中。注意,您不需要运行宏,它会自动执行

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Sh.Index = 1 Then Exit Sub
If Not Target.Address = "$A$1" Then Exit Sub
If Worksheets(2).Range("A65536").End(xlUp).Value = Empty Then
Worksheets(2).Range("A65536").End(xlUp).Value = Target.Value
Else
Worksheets(2).Range("A65536").End(xlUp).Offset(1, 0).Value = Target.Value
End If    
End Sub

我想这就是你想要的:

Sub recorder()

    Sheets(2).Cells(Rows.Count, "B").End(xlUp).Offset(1).Value = Sheets(1).Range("A1").Value

End Sub
但是,如果“A1”是结果单元格,即A1=B1+C1,则代码不会在第2页中注册结果,为什么?