我只是偶尔使用VBA,每次回到它时,我都会遇到以下某种变化:
我有一个Range
对象,名为currentCell
,我用它来跟踪我在电子表格中正在处理的单元格。当我将其更新为指向不同的单元格时,我写入:
currentCell = currentCell.Offset(ColumnOffset:=1)
问题在于我忘了使用 "Set" 关键字,所以上述代码实际上使用的是 Range
对象的默认属性:
问题在于我忘了使用 "Set" 关键字,所以上述代码实际上使用的是 Range
对象的默认属性:
currentCell.Value = currentCell.Offset(ColumnOffset:=1).Value
所以当前单元格的内容被新单元格的内容覆盖了,我的currentCell
变量没有更改为指向一个新单元格,当我意识到我已经犯了同样的错误第一百次时,我感到非常愤怒。
也许最好的答案就是在我的显示器上贴个便笺,上面写着“你今天记得使用Set了吗?”。但如果有人有任何建议可以帮助我,我会很感激听到他们的想法。特别是:
- 是否有任何方法在您隐式使用默认属性时打开警告?我从来没有故意这样使用过它们,如果我需要,我总是调用
Range.Value
。 - 有没有将变量标记为“只能用于从电子表格中读取数据”的良好实践?在我编写的大多数代码中,几乎所有变量都是用于收集数据的,如果某些东西开始无意中编辑单元格,那么获得警告会很方便。
Set
了。 - Neil Vass