![](/img/trans.png)
[英]Excel VBA Copy paste into cell doesnt trigger worksheet_change
[英]Excel VBA Cut or copy and paste on change of cell
我正在制作库存系统。我想要的是在日期更改时将期末库存复制到期初库存列,期末库存保持其公式,只需将值复制到期初库存。
日期在单元格“AF1”中,今天的日期公式 =Today() 收盘股票在列 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
当我更改日期时,它会崩溃 TYPE MISMATCH 13 并且这变为突出显示黄色
如果目标 = Range("AF1") 那么
如果您要更改Worksheet_Change事件宏中的任何内容,您需要禁用事件处理,以便 sub 不会触发另一个事件并尝试在其自身之上运行。
此外, 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.