Excel VBA剪切或复制并粘贴到单元格的更改上

我正在制定一个库存系统。我想要的是,当date会变化时,将结算股票复制到开盘股票列表中,并保持其公式只是将值复制到开盘股票。

date在单元格“AF1”与今天date公式=今天()closures股票在AB2栏:AB75与公式(开盘股票 – 出售=结束股票)

Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("AF1") Then Range("AB2:AB75").Copy Range("AA2:AA75").PasteSpecial Else End If End Sub 

当我改变date它崩溃TYPE MISMATCH 13和这成为突出黄色

如果目标=范围(“AF1”)然后

如果要更改Worksheet_Change事件macros中的任何内容,则需要禁用事件处理,以便该子程序不会触发另一个事件并尝试在其自身之上运行。

此外, Target可以是一个小区或大量的小区。 您无法可靠地将其与单个单元格进行比较。 但是,您可以可靠地将其Range.Address属性与单个单元格的Range.Address属性进行比较 。

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("AF1").Address Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False Range("AA2:AA75") = Range("AB2:AB75").Value Else 'something else...? End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

使用Application.EnableEvents属性 tp禁用事件应该只能通过错误控制来完成,否则在发生错误时总是将其重新打开。

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$AF$1" Then ' Avoid copy then paste by assigning the value itself Target.Worksheet.Range("AA2:AA75").Value = Target.Worksheet.Range("AB2:AB75").Value End If End Sub