VBA Range 的delete和Clear的坑

Jan 1, 0001

2 mins read

VBA

背景

今天遇到一个需求,将表下载下来贴到另一个模板里,因为模板里已经存在公式了,我就直接贴进去就可以了,为了避免模板里原有数据可能会干扰,我直接用 ActiveSheet.Range("Rownum:rowNUm").EntireRow.Delete 删除。 本以为很简单,可是测试的时候,直接反馈 BUG,说公式变动了。我当时就纳闷了,我没动公式啊。

解决办法

经过我一步一步调试,发现,原来是 delete function 导致的。 如下图,

A1 存在公式为 D3 到 D100 的和,这个时候如果直接用 delete,

这个时候,A1 直接报错,这样会导致公式变化,而使用Clear function的时候,则,A1 并不会变成乱码,公式依然存在,只是值为 0

结论

delete function有时候会影响到其他的函数,使用时候应该谨慎小心

Sharing is caring!