Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wertänderung durch Formel bei Case

Wertänderung durch Formel bei Case
02.11.2008 16:36:21
Werner
Hallo
wer gibt mir einen Rat.
Im nachfolgenden Makro werden im Bereich D2 bis D52 bei manueller Eingabe die Msg.Boxen ausgegeben.Das funktioniert einwandfrei.
Frage: Wenn in D2 bis D52 Formel stehen (z.B in D10; =a10+b10) die den Wert erreichen klappt es nicht. Was muss ich ändern?

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D52")) Is Nothing Then
On Error GoTo ErrExit
Application.EnableEvents = False
Select Case Target.Value
Case Is 


Freue mich auf Rückmeldungen
Werner

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ereignis "Worksheet_Calculate"
02.11.2008 16:53:02
NoNet
Hallo Werner,
das Ereignis Private Sub Worksheet_Change(ByVal Target As Range) tritt nur bei manueller Änderung ein, wobei Target die geänderte(n) Zellen ist (sind).
Für Berechnungen gibt es das Ereignis Private Sub Worksheet_Calculate().
Da hier keine Zellen manuell geändert wurden, gibt es hier kein Target.
Du musst die Zellen dann direkt (einzeln) im Code überprüfen, z.B. so :
VBA-Code:
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
Anzeige
AW: Ereignis "Worksheet_Calculate"
02.11.2008 17:13:00
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 :-)
02.11.2008 17:29:00
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"
02.11.2008 17:31:00
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
Anzeige
AW: Wertänderung durch Formel bei Case
02.11.2008 16:55:50
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

Anzeige
AW: Wertänderung durch Formel bei Case
02.11.2008 17:38:21
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
02.11.2008 17:50:00
Daniel
Hi
sorry, steh grad auf dem Schlauch.
Welches Ereignis startet das Change-Event noch?
Gruß, Daniel
AW: Worksheet_Change ...
02.11.2008 17:55:00
Gerd
Hallo!
... kann auch per Code ausgelöst werden.
Gruß Gerd
AW: Worksheet_Change ...
02.11.2008 18:04:00
Daniel
Hi
ok, hast recht

Sub test()
Call Tabelle1.Worksheet_Change(Range("A1"))
End Sub


funktioniert auch.
Gruß, Daniel

AW: Worksheet_Change ...
02.11.2008 18:20:00
Gerd
Oder ganz normal:

Sub test()
Range("a1")= 1
End Sub


Gruß Gerd

Anzeige
AW: Worksheet_Change ...
02.11.2008 18:24:00
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
02.11.2008 17:37:00
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
02.11.2008 17:40:52
Heinz
Hi,
du musst die Beiträge schon lesen, das Ereignis muss Worksheet_Calculate() sein.
mfg Heinz
AW: Wertänderung durch Formel bei Case
02.11.2008 17:47:00
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
Anzeige
AW: Wertänderung durch Formel bei Case
02.11.2008 18:23:34
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

Anzeige
AW: Wertänderung durch Formel bei Case
02.11.2008 17:58:00
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

Anzeige
AW: Wertänderung durch Formel bei Case
02.11.2008 18:09:00
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige