间接调用时子例程未完全执行

时间:2015-01-12 10:30:44

标签: excel excel-vba vba

我有一个电子表格,其中包含以下两个子程序(它们还有很多,但我已经删除了与问题没有直接关系的所有代码):

Sub HF_Reset()
    Feats_Reset
End Sub

Sub Feats_Reset()
    Range("TblAllFeatsSelected").Value = CVErr(xlErrNA)
    Range("Test").Value = "Success"
    Range("Test2").Value = 1
End Sub

Test是单个单元格,Test2是两个单元格区域,TblAllFeatsSelected是一个大范围。

如果我调用Feats_Reset,它会执行绝对正常,执行它的目的。如果我调用HF_Reset,则Test会将“成功”放入其中,而Test2会填充1,但TblAllFeatsSelected不会更改。我完全不知道发生了什么 - 任何想法?

出于调试目的,我还尝试设置Range("TblAllFeatsSelected").Value = 1Range("TblAllFeatsSelected").Value = 0,并在调用Feats_Reset时再次正常工作,但在调用HF_Reset时却没有。

编辑:我已经玩了一些,并将问题追溯到另一​​个在Feats_Reset中调用的子程序。我怀疑我不能在这里提供足够的信息来获得有用的答案 - 这是一个复杂的表格,并且有很多可能是问题的交互。烦。

EDIT2:发现问题。子程序将TblAllFeatsSelected设置为另一个范围的值,当从HF_Reset调用时需要有一个Application.Calculate,否则它会将其恢复到以前的状态。

有什么方法可以删除这个问题没用吗?这是一个特定的事情,我怀疑它可以帮助其他任何人。

1 个答案:

答案 0 :(得分:0)

键盘和椅子之间存在问题。我在代码的完全不同的部分错过了Application.Calculate