VBA停止计算细胞

时间:2013-06-06 12:54:55

标签: excel-vba vba excel

Excel中的VBA非常新,被要求对单元格更改进行一些验证并且有点卡住。

因此,用户需要在单元格中输入货币值,比方说D16,所以我想我会在工作表上挂钩_Change事件,效果很好。

但是,当条目已提交到D16时,我需要工作表的其余部分才能完成计算,基本上,当输入500000时,其他单元格将使用其他工作表中的值进行更新。

我的代码

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target = Range("D16") Then

       Dim numeric
       numeric = IsNumeric(Target)


       If numeric = False Then

          MsgBox "error"
          Exit Sub

          /// this is where I need to "stop" the calculations from firing

       End If

    End If

End Sub

2 个答案:

答案 0 :(得分:18)

我希望下面的代码有帮助。您需要将其粘贴到表单代码部分。

Private Sub Worksheet_Change(ByVal Target As Range)

    On Error Resume Next

    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    Dim rng As Range
    Set rng = Range("D16")

    If Not Intersect(Target, rng) Is Nothing And IsNumeric(Target) Then

        If Target.Value >= 500000 Then
            MsgBox "Value is greater than 500000"
        End If


    End If


    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
End Sub

答案 1 :(得分:11)

使用Application.Calculation = xlCalculationManual

不要忘记重新打开它:Application.Calculation = xlCalculationAutomatic