如果单元格值发生变化,Excel 将单元格值复制到另一个单元格

如果单元格值发生变化,Excel 将单元格值复制到另一个单元格

当单元格 (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

怎么运行的:

  • CellA1与 Cell 相链接H1,有公式。
  • 一旦您更改与单元格中的公式链接的源单元格中的数据,Excel 就会在单元格和H1单元格中获取新值。H1A1
  • 然后工作表计算事件触发宏CalCopy,将单元格中的值复制A1Sheet1另一个工作簿中作为新行/记录。

注意:

  • 使用两个 VBA 宏作为年代标准模块。
  • 将工作簿保存为启用宏1.xlsm
  • 您需要根据需要更改文件路径。
  • 您可以根据需要调整代码中的单元格引用

答案2

尝试使用 Change 事件而不是 SelectionChange。

相关内容