2017-06-21 2 views
0

Ich habe das Skript unten, das tut ziemlich viel, was ich will, aber ich brauche es nur abzufeuern, wenn jemand einen Wert aus dem Bereich E9: E17 löscht. Es ist nicht wirklich ein SelectionEvent, es ist eher ein Change_Event, aber wenn die Änderung das Löschen ist, ist der Wert aus der Zelle verschwunden, bevor ich ihn erfassen kann. Ich denke das SelectionEvent muss das Change Event aufrufen. Macht das Sinn? Lassen Sie es mich wissen, wenn Sie eine Klärung benötigen. Vielen Dank!!Wie kann ich nur ein Makro auslösen, wenn jemand einen Wert aus einem bestimmten Bereich löscht?

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 

Application.EnableEvents = True 

If Not Intersect(Target, Range("E9:E17")) Is Nothing Then 

    GetValue = ActiveCell.Value 
    GetCustomer = ActiveCell.Offset(0, -1).Value 

    With Sheets("LargeCustomerOP").Range("D2:D6") 'searches range in Col D 
     Set Rng = .Find(What:=GetCustomer, _ 
         After:=.Cells(.Cells.Count), _ 
         LookIn:=xlValues, _ 
         LookAt:=xlWhole, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlNext, _ 
         MatchCase:=False) 
     If Not Rng Is Nothing Then 
      Rng.Offset(0, 1).Value = Rng.Offset(0, 1).Value + GetValue 
     Else 
      'value not found 
     End If 
    End With 
End If 

Application.EnableEvents = True 

End Sub 
+0

Nun, ich habe daran gedacht, aber ich bin mir nicht sicher, wie es aussehen würde. Wenn es leer ist, ist die Möglichkeit, den Wert zu erfassen, weg. Wenn es nicht leer ist, gibt es nichts zu tun, richtig. Wenn Sie eine funktionierende Lösung haben, senden Sie den Code bitte. – ryguy72

+0

Sie haben nicht genau beschrieben, was Ihre Ereigniskette zu tun hat. – jkpieterse

Antwort

4

Speichern Sie die Daten in dem Worksheet_SelectionChange -Event in einem globalen var und den Zugang in dem Worksheet_Change -Event. Siehe this example auf Stackoverflow

+0

Jetzt macht es Sinn. Danke allen !! – ryguy72

0

Sorry, keine Zeit haben, um den Code zu schreiben, aber ich bin sicher, dass jemand anderes es kann helfen ..

Erstellen Sie eine gespiegelte Kopie des Blattes auf einem versteckten Blatt von Worksheet_Change verwenden. Sie müssen nur den Bereich spiegeln, um den Sie sich sorgen.

Jedes Mal, wenn eine Änderung vorgenommen wird folgende Aufgaben auszuführen im Fall:

  1. überprüfen Sie, ob das Ziel leer wird. Wenn dies der Fall ist, speichern Sie den Wert der gleichen Zelle aus dem Spiegel.

  2. Kopieren Sie den Wert der Zielzelle in dieselbe Zelle im Spiegel.

  3. Wenn das Geschäft einen Wert hat, dann handeln Sie so, wie Sie es für richtig halten.

Verwandte Themen