Private Sub Worksheet_Calculate()
Dim rngZelle As Range
Application.EnableEvents = False
For Each rngZelle In [D5:D52]
Select Case Target.Value
Case Is < 5
MsgBox "unter 5", , "Zelle : " & rngZelle.Address
Case Is < 42
MsgBox "unter 42 ", , "Zelle : " & rngZelle.Address
Case Is < 50
MsgBox "HAllO " & Chr(13) _
& "Wert ist" & Chr(13) _
& "zwischen" & Chr(13) _
& "42" & Chr(13) _
& "und" & Chr(13) _
& "50" & Chr(13), vbExclamation, "Zelle : " & rngZelle.Address
'16= Stopsymbol
'32= Fragezeichen
'48= Ausrufezeichen
'64= Infozeichen
Case Else
MsgBox "Zu Hoch" & vbCrLf & "Bitte absenken" & vbCrLf & vbCrLf & "Zur Erinnerung", vbInformation
End Select
Next
Application.EnableEvents = True
End Sub
Gruß, NoNet
AW: Ereignis "Worksheet_Calculate"
Uwe
Hi NoNet,
kann es sein, dass in Deinem Code noch:
Select Case Target.Value
ersetzt werden muss durch:
Select Case rngZelle.Value
Gruß
Uwe
(:o)
Wie Recht Du hast - Danke Uwe :-)
NoNet
Hey Uwe,
das kommt davon, wenn man zuviel mit "Copy-Paste" arbeitet und dann nur die Hälfte des kopierten Codes anpasst ;-)
Gut, dass es aufmerksame Leser wie Dich gibt, denen das auffällt und die den Code sofort korrigieren.
Danke nochmals für den Hinweis,
Gruß NoNet
AW: Ereignis "Worksheet_Calculate"
Gerd
Hallo Uwe !
Zitat:"Da hier keine Zellen manuell geändert wurden, gibt es hier kein Target."
Das ist richtig, deine Frage ist daher zu bejahen.
Gruß Gerd
AW: Wertänderung durch Formel bei Case
Daniel
Hi
das Change-Event wird nur ausgelöst, wenn ein Wert manuell geändert wird.
dh. du musst entweder auf das Calculate-Event umstellen, dann kannst du aber nicht feststellen, welche Zellen geändert wurden, oder du musst eben die Zellen abprüfen, die manuell geändert werden,
in deinem Fall würde das dann so aussehen (der Wert in D berechnent sich aus den handischen Eingaben aus spalte A und B in der gleichen Zeile)
If Not Intersect(Target, Range("A2:B52")) Is Nothing Then
On Error GoTo ErrExit
Application.EnableEvents = False
Select Case cells(Target.row, "D").Value
Gruß, Daniel
AW: Wertänderung durch Formel bei Case
NotNe
Hi,
"...das Change-Event wird nur ausgelöst, wenn ein Wert manuell geändert wird...."
Darüber denk nochmal nach, das stimmt nicht!
mfg Heinz
AW: Wertänderung durch Formel bei Case
Daniel
Hi
sorry, steh grad auf dem Schlauch.
Welches Ereignis startet das Change-Event noch?
Gruß, Daniel
AW: Worksheet_Change ...
Gerd
Hallo!
... kann auch per Code ausgelöst werden.
Gruß Gerd
AW: Worksheet_Change ...
Daniel
Hi
ok, hast recht
Sub test()
Call Tabelle1.Worksheet_Change(Range("A1"))
End Sub
funktioniert auch.
Gruß, Daniel
AW: Worksheet_Change ...
Gerd
Oder ganz normal:
Sub test()
Range("a1")= 1
End Sub
Gruß Gerd
AW: Worksheet_Change ...
Daniel
Hi
naja, das würde ich, auch wenn es durch Code passiert, als "Manuell ändern" einstufen.
Gruß, Daniel
AW: Wertänderung durch Formel bei Case
Werner
Hallo
habe alles getestet und kein Erfolg gehabt.
Es ist überhabt keine Meldung mehr da.
Anbei mal meine Testdatei.
https://www.herber.de/bbs/user/56462.xls
habt ihr noch einen Ansatz oder habe ich etwas verkehrt gemacht?
Tschüs Werner
AW: Wertänderung durch Formel bei Case
Heinz
Hi,
du musst die Beiträge schon lesen, das Ereignis muss Worksheet_Calculate() sein.
mfg Heinz
AW: Wertänderung durch Formel bei Case
Werner
Hallo Heinz
ich habe sehr aufmerksam die Beiträge gelesen weil ich an der Löung das größte Interesse habe
Ich habe es jetzt nochmals mit Worksheet_Calculate() probiert aber keine Msgbox ging auf.
Danke aber für deine Info.
Tschüs Werner
AW: Wertänderung durch Formel bei Case
Tino
Hallo,
entschuldige das ich mich hier einmische, habe den Beitrag auch nicht komplett gelesen, verstehe ich aber diesen Code richtig ist dass Change Ereignis nicht so schlecht.
Die Formel wird berechnet nach einer Eingabe in Spalte B oder C, daher Prüfe ich ob Target in B oder C sich befindet.
Befindet Target sich dort, gebe ich Target einfach die Zelle aus Spalte D.
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:C52")) Is Nothing Then
On Error GoTo ErrExit
Set Target = Cells(Target.Row, "D")
Application.EnableEvents = False
Select Case Target.Value
Case Is < 5
MsgBox "unter 5"
Case Is < 42
MsgBox "unter 42 "
Case Is < 50
MsgBox "HAllO " & Chr(13) _
& "Wert ist" & Chr(13) _
& "zwischen" & Chr(13) _
& "42" & Chr(13) _
& "und" & Chr(13) _
& "50" & Chr(13), 48
'16= Stopsymbol
'32= Fragezeichen
'48= Ausrufezeichen
'64= Infozeichen
Case Else
MsgBox "Zu Hoch" & vbCrLf & "Bitte absenken" & vbCrLf & vbCrLf & "Zur Erinnerung", 64
End Select
End If
ErrExit:
Application.EnableEvents = True
End Sub
Gruß Tino
AW: Wertänderung durch Formel bei Case
Daniel
Hi
das kann nicht sein.
mein Ansatz funktioniert einwandfrei.
sollte es daran liegen, daß du das Problem in der Frage anders beschrieben hast, als es tatsächlich ist, (Spalte A+B in Beschreibung, Spalte B+C in Beispieldatei), dann solltest du halt in der Lage sein, das Prinzip zu erkennen und die entsprechenden Anpassungen im code selber durchzuführen.
hier nochmal der Code für deine Testdatei, jetzt für Spalte B und C.
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:C52")) Is Nothing Then
On Error GoTo ErrExit
Application.EnableEvents = False
Select Case Cells(Target.Row, "D").Value
Case Is
Gruß, Daniel
AW: Wertänderung durch Formel bei Case
Werner
Hallo Daniel
dein Vorschlag läuft einwandfrei
Ich habe mein Excel einmal neu gestartet und dann ging auch dein Code
Danke !!!
Tschüs Werner
|