首页 > 解决方案 > 我的脚本破坏了 Excel 的计算,有人可以帮我确定它有什么问题吗?

问题描述

我已经设置了一个 VBA 代码,它设置了一个表单供用户填写信息。我设置了另一个在工作表计算时运行的 VBA 代码,它对任何不符合要求的信息进行一些检查和更正。一旦第二个代码运行,所有工作表计算就会停止,我只能编辑第一个解锁的单元格,即使工作表保护关闭并且我选择了另一个单元格。所有打字都转到第一个解锁的单元格。

此脚本在由选择更改或手动运行脚本触发时起作用。我已经搜索了互联网,但我找到的只是设置列表(所有这些我都检查过)。

Private Sub Worksheet_Calculate()
'Transfer
'

If Range("AAA1").Value = "Transfer" And Range("AAB1").Value = "Not Empty" Then
    If Range("D3").Value = "0" Or Range("D3").Value = "" Then
        Range("AAB1").Value = "Empty"
    End If
End If
If Range("AAA1").Value = "Transfer" And Range("AAB1").Value = "Empty" Then
    If Range("E3").Value = Empty Or Range("F3").Value = Empty Then
        Else
        Range("D3").Value = Range("AA3").Value
        Range("AAB1").Value = "Not Empty"
    End If
End If
If Range("D3").Value > Range("AA3").Value And Range("AAA1").Value = "Transfer" Then
    Range("D3").Value = Range("AA3").Value
End If

End Sub

预期结果是当单元格 E3 和 F3 都已填写且单元格 D3 为空或等于零时,单元格 D3 的值将自动设置为最大值(使用单元格 E3 中的值在单元格 AA3 中计算)。我将单元格 AAB1 用作“开关”,以便用户可以轻松输入自定义金额。单元格 AAA1 由设置表单的第一个宏设置。这一切都工作一次。然后我遇到了上面描述的问题。

标签: excelvba

解决方案


我听从了 Harassed Dad 的建议,将 Application.EnableEvents = FALSE 放在脚本的开头,将 = TRUE 放在最后。它成功了。我不认为在脚本完成之前更改值会触发计算。多谢你们。


推荐阅读