mehrfache Worksheet_Change(...) in einer Tabelle
#1
Hallo Zusammen,
ist es möglich in einer Tabelle zwei


Sub Worksheet_Change(ByVal Target As Range) zu benutzen? ich bekomme einen Fehler, hier meine codes

code 1
Code:
Sub Worksheet_Change(ByVal Target As Range)
Dim cRange As Range
Dim sRange As Range

Set cRange = Range("C5:C100")
Set sRange = Range("I5:I100")

If Not Intersect(Target, ActiveCell) Is Nothing Then
    Select Case Range("H5")
        Case "January": Range("G5") = WorksheetFunction.SumIf(cRange, "January", sRange)
        Case "February": Range("G5") = WorksheetFunction.SumIf(cRange, "February", sRange)
        Case "March": Range("G5") = WorksheetFunction.SumIf(cRange, "March", sRange)
        Case "April": Range("G5") = WorksheetFunction.SumIf(cRange, "April", sRange)
        Case "May": Range("G5") = WorksheetFunction.SumIf(cRange, "May", sRange)
        Case "June": Range("G5") = WorksheetFunction.SumIf(cRange, "June", sRange)
        Case "July": Range("G5") = WorksheetFunction.SumIf(cRange, "July", sRange)
        Case "August": Range("G5") = WorksheetFunction.SumIf(cRange, "August", sRange)
        Case "September": Range("G5") = WorksheetFunction.SumIf(cRange, "September", sRange)
        Case "October": Range("G5") = WorksheetFunction.SumIf(cRange, "October", sRange)
        Case "November": Range("G5") = WorksheetFunction.SumIf(cRange, "November", sRange)
        Case "December": Range("G5") = WorksheetFunction.SumIf(cRange, "December", sRange)
    End Select

End If
End Sub

und her code 2
Code:
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, ActiveCell) Is Nothing Then
    Select Case ActiveCell
        Case "Updated balance sheet, Closed": Status1
        Case "Missing approval for balance sheet": Status2
        Case "Return, on Hold, Refund": Status3
        Case "": Status10
    End Select
End If
End Sub


danke für die Hilfe

t
Antworten Top
#2
1. Intersect(Target, ActiveCell) ergibt keinen Sinn; ist immer TRUE.
2. Das Mischen von "mehreren" WS_Chg auf nur eines ist eine reine Logik-Frage, deren Beantwortung fast immer möglich ist.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#3
jetzt stürzt die tabelle ab


Angehängte Dateien
.xlsm   AA.xlsm (Größe: 19,39 KB / Downloads: 5)
Antworten Top
#4
Hallo,

ich bin ja nun nicht derjenige, der von der Verwendung von Makros abrät. Aber in deinem Fall, wo eine einzige Formel reicht, ist das schon übertrieben.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
meine Antwort habe ich abgebrochen, weil Klaus mir zuvor kam.
Aber damit du deine Datei nicht mehr abstürzen lassen mußt, will ich dennoch was loswerden. 

Wenn du eine Eventroutine benutzt, ist es sehr gefährlich wenn darin dann Zellinhalte verändert werden. Somit generierst du im Falle vom Changeevent immer neue Events. 
Deshalb die Eventbehandlung vor der Zelländerung abschalten und danach wieder einschalten. Application.enableevents = true/false

Das Ding mit  if Target = ActiveCell soll bitte schön was?  Die aktive Zelle ist das Target. Wie schon Jemand vorher gesagt ist dieser Vergleich immer!!!  Wahr/True. Somit könntest du diese Bedingung auch gleich weglassen und den eingeschlossenen Code so hinschreiben.  

Sofern du auf der Summenformel per Vba weiterhin bestehst, dann frag das doch so ab  If target.address(0,0) = "M3" then

gruß

rb
Antworten Top
#6
hallo klaus
hätte ich gerne gewusst, wie ich das Formel ohne vba machen kann.

gruss
Antworten Top
#7
Moin


Zitat:Das Ding mit  if Target = ActiveCell soll bitte schön was?  Die aktive Zelle ist das Target.
Kannst so nicht sagen.



Schreib in eine Zelle etwas und drücke Enter.
Markiere die Zelle wieder und drücke Entfernen.
Ziehe/Kopiere eine beschriebene Zelle am Anfasser.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address
MsgBox ActiveCell.Address
End Sub

Gruß Elex
Antworten Top
#8
Kopieroperationen werden (zumindest vom normalen) WS_Chg sowieso nicht (richtig) erfasst (Kopiere mal einen Wert auf ein Target, statt es händisch zu ändern). 

Also ist die Aussage ActiveCell=Target=Unsinn nicht widerlegt.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#9
Das Ding mit  if Target = ActiveCell soll bitte schön was?  Die aktive Zelle ist das Target.

Ja, definitiv. Daher habe ich das Beispiel geschickt (,in L5), bitte beachte L5:L10000 haben gleiches Pull-Down Menu.
... die Mitarbeiter sollen anhand von 4 Optionen zu einer Bestellung entscheiden, was dort einzutragen ist. 

Hoffe so wird besser deutlich ...


Angehängte Dateien
.xlsm   AA.xlsm (Größe: 22,1 KB / Downloads: 5)
Antworten Top
#10
Zitat:Wie schon Jemand vorher gesagt ist dieser Vergleich immer!!!  Wahr/True

Darum geht es. Und ist falsch. 64
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste