我正在建立一个库存系统。我想要的是在日期发生变化时将期末股票复制到开仓股票栏,而收盘股票保持其公式只是将价值复制到开仓股票。
日期在单元格“AF1”中,今日日期公式=今天() 关闭股票在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并且这会变成高亮黄色
如果目标=范围(“AF1”)那么
答案 0 :(得分:1)
如果要在Worksheet_Change事件宏中更改任何内容,则需要禁用事件处理,以便子不会触发另一个事件并尝试在其自身之上运行。
此外,目标可以是一个单元格或大量单元格。您无法将其与单个单元格进行可靠的比较。 可以然而,可靠地将其Range.Address property与单个单元格Range.Address property进行比较。
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 property tp禁用事件只能通过错误控制完成,并且在出现问题时始终将其重新打开。
答案 1 :(得分:0)
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