2013-06-06 29 views
6

Bardzo nowość w VBA w Excelu, poproszono mnie o sprawdzenie poprawności zmiany komórki i trochę utknąłem.VBA Zatrzymaj obliczanie komórek

Tak więc użytkownik musi wprowadzić wartość pieniężną w komórce, powiedzmy D16, więc pomyślałem, że włączyłem zdarzenie _Change w arkuszu roboczym, który działa całkiem dobrze.

Jednak potrzebuję pozostałej części arkusza, aby nie dokończyć obliczeń, gdy wpis został wprowadzony do D16, zasadniczo, gdy wprowadzono 500000, inne komórki są aktualizowane wartościami z innego arkusza.

Mój kod

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 
+0

@Santosh, tak, żaden z nich nie rozwiązał naszego problemu. W końcu podpięliśmy każde dostępne wydarzenie i wywołaliśmy zdarzenie Worksheet_Change w każdym z nich. Dziwny scenariusz, wiem, nie potrafię wyjaśnić, dlaczego, ale zadziałało. – JadedEric

Odpowiedz

13

Mam nadzieję, że poniższy kod pomoże. Musisz wkleić to w sekcji kodu arkusza.

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 
9

Zastosowanie Application.Calculation = xlCalculationManual.

Nie zapomnij włączyć go ponownie: Application.Calculation = xlCalculationAutomatic.

Powiązane problemy