2016-06-13 3 views
0

Ich brauche eine Worksheet_Change zu machen, die für die Änderung der Werte in zwei verschiedenen Zellen in 2 verschiedenen Blätter überprüft. Ich habe jedoch mehr als 2 Blätter und möchte kein Workbook_Change verwenden, damit diese anderen Blätter nicht betroffen sind.Der Versuch, VBA Worksheet_Change Arbeit auf mehrere Blätter, aber nicht alle

Meine Werke-Code, sondern nur prüft, ob die Zellen in einem Arbeitsblatt aber nicht für die andere Arbeitsblatt. Ich muss beide Arbeitsblätter einchecken.

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("M9")) Is Nothing Then 
    Application.EnableEvents = False 
    Application.ScreenUpdating = False 
    Call Macro5 
    Application.EnableEvents = True 
    Application.ScreenUpdating = True 

    End If 

If Not Intersect(Target, Range("I88")) Is Nothing Then 
    Application.EnableEvents = False 
    Application.ScreenUpdating = False 
    Call Macro6 
    Application.EnableEvents = True 
    Application.ScreenUpdating = True 

    End If 

    End Sub 

Danke.

+1

Sie müssen den Code auch in das andere Arbeitsblattmodul einfügen und dann – newguy

+0

Wow, ich arbeite seit einiger Zeit mit Excel und habe nie realisiert, dass ich anderen Code für verschiedene Blätter schreiben kann. Vielen dank für Deine Hilfe :). – Artak

+2

Es gibt auch die Arbeitsmappe-Ebene 'Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)', die Sie Ihren Code verwenden könnten, zu vermeiden (und Ausgang, wenn 'Sh.Name' nicht einer überwachten Blätter ist) –

Antwort

0

In dem Codemodul des Arbeitsmappe Sie Ereignisse ausgelöst auf jedem Arbeitsblatt zugreifen können.

Wenn Sie wissen möchten, auf welchem ​​Arbeitsblatt das Ereignis ausgelöst wurde, können Sie den Parameter ByVal Sh As Object verwenden.

Wenn Sh.Name = "Sheet1" dann

Wenn Sie auf die Eigenschaften des Objekts Sh zugreifen IntelliSense, Guss Sh von einem Objekt zurück in ein Worksheet-Objekt

Dim ws as WorkSheet 
Set ws = Sh 
0

Der Privat Befehl schränkt die Unterroutine zu dem aktuellen Arbeitsblatt, so sind Sie richtig, dass mit dem Befehl Unterprogramm, um zu verhindern, alle Ihrer Blätter zu verändern.

Wie newguy sagte, ist die einfachste fix den Code in jedem der Arbeitsblatt-Module Sie es, die jeweils mit dem privaten Befehl verändern wollen zu platzieren ist.

Verwandte Themen