Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
460to464
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
460to464
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anzeige MsgBox

Anzeige MsgBox
02.08.2004 13:11:10
Torsten
Hallo zusammen,
in meiner Datei soll eine MsgBox angezeigt werden, sobald der Range("K82") - Range("M82") größer EUR 1.000 ist.
(Anmerkung: Range("K82") bzw. ("M82") sind Summenfelder (z.B.:(K82 = K4:K80))
Gibt der User z.B. im Range ("K10") 500 ein, anschließend im Range ("K15") 700 ein, so soll die MsgBox erscheinen.
Mit dem etwas angepaßten Code von IngoG gelingt mir das:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Range("K82") - Range("M82") < 1000 Then
V = 0
Else
If (V = 0) And Range("K82") - Range("M82") > 1000 Then
MsgBox "Das Estimate 2004 weicht nunmehr um mehr" & vbCr & _
"als € 1.000 von Ihrem Budget 2004 ab!" & vbCr & _
"Bitte anpassen oder Finance ansprechen!", 16, "Warnung"
V = 1
Else
End If
End If
End Sub

'Variable V ist global definiert
Das funktiniert, hat aber leider einen Haken:
Gibt der User einen Betrag in Range("K10") ein, durch den eine Budget-überschreitung von > 1.000 erzeugt wird, erscheint zwar richtigerweise die MsgBox, wenn er aber diesen Betrag dann überschreibt, z. B. wiederum mit einem Betrag, der zu einer Budgetüberschreitung führt, wird leider die MsgBox nicht nocheinmal angezeigt.
Im Prinzip möchte ich folgendes erreichen:
Die MsgBox soll immer dann erscheinen, wenn ich mit einer Eingabe die 1.000-Grenze überschreite. Wenn sie aber einmal überschritten worden ist, soll sie bei weiteren Eingaben nicht mehr angezeigt werden, es sei denn, der User korrigiert einen bereits eingegebenen Betrag mit einem Betrag, der wiederum zu einer Überschreitung führt. Ist das noch irgendwie verständlich? :-)
Könnt Ihr mir hier weiterhelfen?
Vielen Dank im voraus.
Gruß
Torsten

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzeige MsgBox
Nike
Hi,
vielleicht dann nicht nur das Selection_Change Ereignis pruefen,
sondern auch
Private Sub Worksheet_Change(ByVal Target As Range)
Bye
Nike
AW: Anzeige MsgBox
Torsten
Hallo Nike,
schönen Dank für Deine schnelle Rückmeldung.
Kannst Du mir hier behilflich sein und mir beschreiben wie das aussehen müsste?
Gruß
Torsten
AW: Anzeige MsgBox
ChrisL
Hi Torsten
Dafür gibt es die Gültigkeitsprüfung (Daten/Gültigkeit). Benutzerdefiniert:
=WENN(SUMME($K82:$M82)&lt=1000;WAHR;FALSCH)
Gruss
Chris
AW: Anzeige MsgBox
Torsten
Hallo Chris,
schönen Dank für Deine Rückmeldung.
Allerdings stehe ich jetzt wohl völlig auf dem Schlauch, weil ich nicht weiß, wie ich Deinen Lösungsansatz mit meinem VBA-Code übereinander bringen soll.
Kannst Du mir noch ein paar Tips geben.
Danke und
Gruß
Torsten
Anzeige
AW: Anzeige MsgBox
ChrisL
Hi Torsten
Wieso unbedingt mit VBA, wenn es doch schon eine Standardfunktion dafür gibt.
Gruss
Chris
AW: Anzeige MsgBox
Torsten
Hallo Chris,
ich hab' kein Problem damit, wenn eine Lösung nicht in VBA spielt.
Nur wie soll ich Deine Lösung mit der gewünschten MsgBox und den übrigen bereits geschilderten Bedingungen verknüpfen?
Ich weiß Deine Antwort nicht einzuordnen. :-(
Vielen Dank für Deine Geduld.
Gruß
Torsten
AW: Anzeige MsgBox
ChrisL
Hi Torsten
Habe deine Frage erst jetzt richtig gelesen, wofür ich mich aufrichtig schäme. Blame on me! :-)
Für eine saubere VBA Lösung bitte ich noch um folgende Zusatzinfo.
a) Aus welchen Bereichen benau bilden sich die Summen in K82:M82. Ist m.E. wichtig, um den Bereich richtig einzuschränken.
b) Du schreibst, Überschreitung führt zu MsgBox, erneute Überschreitung nicht. Andererseits schreibst du, dass die MsgBox nur bei der ersten Überschreitung erscheinen soll.
Gruss
Chris
Anzeige
AW: Anzeige MsgBox
Torsten
Hallo Chris,
ich hatte es mir bereits gedacht, daß Du meinen Eingangsthread nicht aufmerksam gelesen hast, aber da Du mir als Experte bekannt bist, habe ich erst mal wieder an meinem Verstand gezweifelt. :-). Anyway.
Ich habe eine kleine Testdatei aus meiner fraglichen Datei erstellt und bringe sie hiermit ins Spiel:
https://www.herber.de/bbs/user/9148.xls
Wenn Du bspw. in Zelle I70 5.000 eingibst, erscheint wunschgemäß die MsgBox. Überschreibt der User dann den Wert mit 4.000 zeigt Excel die MsgBox nicht an, obwohl der Betrag immer noch über dem Grenzwert von 1.000 liegt.
Auf der anderen Seite möchte ich natürlich auch nicht, daß, wenn der User die Eingabe von 5.000 nicht ändern will, bei jeder weiteren Eingabe, z.B. in Zelle I72, I74 usw., jedesmal eine MsgBox erscheint. Ist das machbar oder frage ich hier nach der Quadratur des Kreises?
Wäre super, wenn Du hierfür eine Lösung hättest.
Vielen Dank im voraus für Deine Bemühungen.
Gruß
Torsten
(Anmerkung: Ich werde mich morgen erst wieder melden)
Anzeige
AW: Anzeige MsgBox
ChrisL
Hi Torsten
Infolge schlechen Gewissens habe ich die Datei natürlich unverzüglich studiert ;-)
Ich seh das so... zu hohe Ausgaben in irgend einem der Budgetposten kann zur Überschreitung des geplanten Gesamtbetrages führen. Ist dies der Fall, kommt eine MsgBox und weist darauf hin. In der Folge kommt keine Nachricht mehr, auch wenn der für die Überschreitung des Budgets verantwortliche Betrag geändert wird (was du gerne anders haben möchtest).
Nun könnte man speichern, welche Zelle zur Überschreitung geführt hat und so das Ereignis abfangen.
Aus meiner Sicht macht es aber grundsätzlich keinen Unterschied, welcher Posten "verantwortlich" ist, denn Budget Überschritten ist Überschritten. Sagen wir ich gebe EUR 999 für irgendwas aus, dann EUR 2 für Briefmarken usw.
Gruss
Chris
Anzeige
AW: Anzeige MsgBox
ChrisL
Hey Torsten
Wie wärs mit sowas (als Ansatz)...
MsgBox "Pfui... trotzdem weiter?", vbOKCancel + vbCritical + vbDefaultButton2, "FSA warning"
Gruss
Chris
AW: Anzeige MsgBox
Torsten
Guten Morgen Chris,
Du hast im Prinzip Recht, Budgetüberschreitung ist Budgetüberschreitung.
Aber: .."Wenn Du bspw. in Zelle I70 5.000 eingibst, erscheint wunschgemäß die MsgBox. Überschreibt der User dann den Wert mit 4.000 zeigt Excel die MsgBox nicht an, obwohl der Betrag immer noch über dem Grenzwert von 1.000 liegt." Und das würde ich in der Tat gerne ändern. Kannst Du mir dabei helfen?
Vielen Dank für Deine Geduld.
Gruß
Torsten
Anzeige
AW: Anzeige MsgBox
ChrisL
Hi Torsten
Option Explicit
Dim Rng As Range

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 9 Then
If Range("K88") = "ok" Then Exit Sub
If Range("K82") - Range("M82") <= 1000 Then
Set Rng = Nothing
Else
If Rng Is Nothing Then
MsgBox "Das Estimate 2004 weicht nunmehr um mehr" & vbCr & _
"als € 1.000 von Ihrem Budget 2004 ab!" & vbCr & _
"Bitte anpassen oder Finance ansprechen!", 16, "Warnung"
Set Rng = Target
Else
If Rng.Address = Target.Address Then MsgBox "Noch immer zu hoch."
End If
End If
End If
End Sub

Gruss
Chris
Anzeige
AW: Hi Chris - jetzt passt's - (mT)
Torsten
Herzlichen Dank für Deine Unterstützung.
Viele Grüße
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige