8

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
4

2 回答 2

21

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

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
于 2013-06-06T13:03:19.637 回答
11

使用Application.Calculation = xlCalculationManual.

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

于 2013-06-06T13:00:33.587 回答