2013-06-06 6 views
6

Sehr neu zu VBA in Excel, wurde gebeten, eine Überprüfung auf Zellenwechsel zu tun und bekam ein wenig stecken.VBA Stoppen Sie die Berechnung der Zellen

Also muss der Benutzer einen Geldwert in eine Zelle eingeben, sagen wir D16, also dachte ich, ich würde in das _Change-Ereignis auf dem Arbeitsblatt einhaken, das ziemlich gut funktioniert.

Ich brauche jedoch den Rest des Arbeitsblattes, um die Berechnung nicht abzuschließen, wenn ein Eintrag in D16 eingereicht wurde, im Grunde, wenn 500000 eingegeben wird, werden andere Zellen mit Werten aus einem anderen Arbeitsblatt aktualisiert.

Mein Code

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, ja, keine von beiden löste unser Problem. Wir haben jedes verfügbare Ereignis verknüpft und das Worksheet_Change-Ereignis in jedem von ihnen aufgerufen. Seltsames Szenario, ich weiß, ich kann nicht erklären warum, aber es hat funktioniert. – JadedEric

Antwort

13

Ich hoffe unten Code hilft. Sie müssen dies in den Blattcodeabschnitt einfügen.

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

Verwendung Application.Calculation = xlCalculationManual.

Vergessen Sie nicht, es wieder einzuschalten: Application.Calculation = xlCalculationAutomatic.

Verwandte Themen