当单元格 (A1) 的值发生变化时,每次创建新单元格时,该值都会被复制到特定列 (c) 中的另一张工作表 (sheet3)。如果手动输入 A1 中的单元格值,则代码可以正常工作,但这里我在 A1 中有公式/粘贴链接。使用此公式,它不会自动更新。另一个挑战是我想复制到保存在同一文件夹中的另一个 excel(Amount) 中的 sheet1。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
' Get the last row on our destination sheet (using Sheet2, col A here)...
Dim intLastRow As Long
intLastRow = Sheet3.Cells(Sheet3.Rows.Count, "C").End(xlUp).Row
' Add our value to the next row...
Sheet3.Cells(intLastRow + 1, "C") = Target.Value
End If
End Sub
答案1
::警告::
这工作表C悬挂事件当单元格内容发生变化时,工作表年代选举变更事件每当选择一个新单元格时都会起作用。
在您的情况下,无论何时您在单元格中输入数据A1
或重新计算数据,宏都会将每个新值复制到新行中的另一张表中。
但是当单元格A1
与公式链接时它不起作用,原因是在这种情况下工作表C汉格或者年代选举变化作品。
因此我想建议工作表C计算事件,因为每当工作表计算任何公式时它都会触发宏,就像您的情况一样,因为单元格A1
与公式单元格相连。
Private Sub CalCopy()
Workbooks.Open "C:\Yourfolder\satyam.xlsx"
a = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("Sheet1").Range("A" & a).Value = Workbooks("1.xlsm").Worksheets("Sheet1").Range("A1").Value
ActiveWorkbook.Save
Workbooks("satyam.xlsx").Close
End Sub
Private Sub Worksheet_Calculate()
If Range("A1").Value = Range("H1") Then
Call CalCopy
End If
End Sub
怎么运行的:
- Cell
A1
与 Cell 相链接H1
,有公式。 - 一旦您更改与单元格中的公式链接的源单元格中的数据,Excel 就会在单元格和
H1
单元格中获取新值。H1
A1
- 然后工作表计算事件触发宏
CalCopy
,将单元格中的值复制A1
到Sheet1
另一个工作簿中作为新行/记录。
注意:
- 使用两个 VBA 宏作为年代标准模块。
- 将工作簿保存为启用宏
1.xlsm
。 - 您需要根据需要更改文件路径。
- 您可以根据需要调整代码中的单元格引用
答案2
尝试使用 Change 事件而不是 SelectionChange。