2017-04-18 2 views
0

Ich weiß, dass ein einzelnes Blatt nicht zwei unabhängige Subs namens Arbeitsblatt ändern kann. Also habe ich es entfernt.Worksheet-Änderung mehrdeutiger Name Lösung?

Ich kann nicht die Änderung herausfinden, die ich benötige, um diesen Code laufen zu lassen. Würde etwas Hilfe lieben.

Private Sub Worksheet_Change(ByVal Target As Range) 


If Target.Row = 10 And Target.Column = 121 And Target.Count = 1 Then 

Set Target = Range("range1") 

If Target <> "Calculate" Then Exit Sub 

Select Case Target.Value 
Case "Calculate" 
    macro1 

End Select 
End If 


ElseIf Target.Row = 10 And Target.Column = 123 And Target.Count = 1 Then 

Set Target = Range("range2") 

If Target <> "Calculate" Then Exit Sub 

Select Case Target.Value 
Case "Calculate" 
    macro2 

End Select 

End If 

End If 



End Sub 
+0

Wenn 'macro1' oder' macro2' ** ** alles auf dem Arbeitsblatt ändern, deaktivieren Ereignisse vorübergehend. Do ** not ** Ziel neu zuweisen. – Jeeped

+0

Was soll dein Code tun und was macht er? –

+0

Läuft der Code, aber funktioniert nicht? Gibt es einen Fehler? Was ist das Problem? – BruceWayne

Antwort

1

So etwas sollte für Sie arbeiten. Als Hinweis, niemals versuchen, das Target Argument neu zuzuordnen:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rngCheck1 As Range 
    Dim rngCheck2 As Range 

    Set rngCheck1 = Intersect(Target, Me.Range("DQ10")) 'Row 10, Column 121 
    Set rngCheck2 = Intersect(Target, Me.Range("DS10")) 'Row 10, Column 123 

    Application.EnableEvents = False 
    On Error GoTo CleanExit 

    If Not rngCheck1 Is Nothing Then 
     If Trim(LCase(rngCheck1.Value)) = "calculate" Then Call macro1 
    End If 

    If Not rngCheck2 Is Nothing Then 
     If Trim(LCase(rngCheck2.Value)) = "calculate" Then Call macro2 
    End If 

CleanExit: 
    Application.EnableEvents = True 

End Sub 
+0

Wäre ein 'ElseIf' hier angebracht, so dass' rngCheck2' nicht geprüft wird, wenn 'rngCheck1' wahr ist? – Jeeped

+0

@Jeeped Es ist sicherlich möglich, dass eine bessere Lösung wäre. Der Titel des Beitrags handelt von einem mehrdeutigen Namen, den ich als OP interpretiere, der zwei simultane worksweat_change-Ereignisse haben möchte, weshalb ich es auf diese Weise geschrieben habe. Doing the ElseIf würde gut funktionieren, obwohl – tigeravatar

+0

Eigentlich, ich denke, beide könnten wahr sein, da es keine Überprüfung, ob Target eine einzelne Zelle ist. – Jeeped

Verwandte Themen