xaumichi
Goto Top

VBA - 2 Change-Ereignisse verknüpfen

Hey!

Habe herausgelesen, dass man pro Tabellenblatt immer nur ein Change-Ereigniss einfügen kann.
Da ich aber 2 brauche sollten diese doch in einem verknüpfbar sein.

Habe beide Ereignisse (mit unterschiedlichem Code) getestet und funktionieren auch.

Leider schaffe ich das mit dem Code nicht.

Könnte mir da wer helfen?

Also:

1. Ereignis: bei Änderungen im Bereich A6:N53 (dann erfolgen auch Änderungen in diesem Bereich)

2. Ereignis: Änderungen im Bereich A1: N5 (dann erfolgen Änderungen im Bereich B7:D9)


LG Mike

Content-ID: 147821

Url: https://administrator.de/contentid/147821

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

EffEins
EffEins 28.07.2010 um 13:32:15 Uhr
Goto Top
Hallo,

vllt. beschreibst Du besser anhand eines Beispiels, was Du genau machen willst. AFAIK gibt es nämlich wirklich nur ein Change()-Ereigniss face-surprise .

Aber natürlich kann man in einem Ereignis mehrere Funktionen/Proceduren abarbeiten. Ist es vllt das, was Du machen willst???
Mit dem "Target"-Parameter im Change-Ereignis kannst Du auf jeden Fall die Zellen bestimmen, in der eine Änderung stattgefunden hat.

Gruß F1
xaumichi
xaumichi 28.07.2010, aktualisiert am 18.10.2012 um 18:42:58 Uhr
Goto Top
Hey!

Also:
Ich habe ein Change()-Ereigniss im Bereich A6:N53, bei dem verschiedene Formatierungen, Rechnungen etc. stattfinden.
Dies funktioniert einwandfrei.

Nun wollte ich in einem anderen Bereich (A1: N5 ) eine Case-Abfrage machen (Problem dazu im Thread: "VBA - Programmabsturz nach CASE Abfrage

Darum wollte ich diese Case - Frage als zweites Ereigniss in diese Change() einbauen, weil es mir sonst das Programm immer abstürtzt.

Nur weiß ich nicht, wie ich die beiden Ereignisse jetzt verknüpfen kann.
Bsp. kann ich leider nicht on stellen, da es zu lang wäre. (Wenns hilft könnte ich dir vl das File ja senden)

LG Mike
EffEins
EffEins 28.07.2010 um 17:48:27 Uhr
Goto Top
ja,... File senden wäre wahrscheinlich besser
EffEins
EffEins 28.07.2010 um 19:10:16 Uhr
Goto Top
Nun hab ich den anderen Thread noch mal gelesen und hab eine Vermutung was Du meinst.

Vielleicht hilft Dir das hier.
In dem Change-Ereignis wird geprüft, in welcher Range Änderungen gemacht wurden und ruft entsprechende Prozeduren auf.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim rng2 As Range
Dim isect As Range

Set rng1 = Range("A6:N53")  
Set rng2 = Range("A1:N5")  

Set isect = Application.Intersect(Target, rng1) 'Range1 suchen  
If Not (isect Is Nothing) Then
    Range1_gefunden Target 'Procedur aufrufen  
    Exit Sub 'Fertig  
End If

Set isect = Application.Intersect(Target, rng2) 'Range2 suchen  
If Not (isect Is Nothing) Then
    Range2_gefunden Target 'Procedur aufrufen  
    Exit Sub 'Fertig  
End If

End Sub


Dann brauchst Du noch 2 Prozeduren, in die Du Dein 'Code' packen kannst

Sub Range1_gefunden(Target As Range)
    MsgBox "die Änderungen wurden in A6:N53 getätigt"  
End Sub

Sub Range2_gefunden(Target As Range)
    MsgBox "die Änderungen wurden in A1:N5 getätigt"  
End Sub

das meintest Du, oder? ;)

Gruß effeins

P.S.
die Zeile aus den anderen Posting sorgt übrigens dafür das bei einer gleichzeitigen Änderung mehrerer Zellen gar nichts passiert
If Target.Cells.Count > 1 then Exit sub
die solltest Du evtl noch einbauen und eine Meldung erscheinen lassen
xaumichi
xaumichi 28.07.2010 um 19:42:56 Uhr
Goto Top
WOWWWWW!!!!

Geile Sache!

So "einfach" wärs gegangen! Hm....und ich ärgere mich schon 3 Wochen damit herum! :S
Es war genau das, was ich mir vorgestellt habe!

Ich sage DANKE!

So, dann werd ich mir das mal alles genau durch den Kopf gehn lassen, was du da gemacht hast! =)

THX!

LG Mike