Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
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

Fehler in der Messagebox

Fehler in der Messagebox
13.12.2017 14:43:56
Hans
Hallo Forum,
ich habe gerade einen Fehler in meinem Makro entdeckt
Private Sub Worksheet_Calculate()
If Range("CK19") 
Wenn nun in CK19 "0,00" als Wert steht, dann bekomme ich auch die Box zu sehen. Es soll ja erst dann erscheinen, wenn der Wert unter 0 geht. Also z.B. "-0,01"
Was bitteschön muss ich ändern?
Danke
Hans

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
naja-funktioniert doch - getestet ! owT
13.12.2017 15:04:10
robert
kT
@Robert liegt es am Dateiformat?
13.12.2017 15:46:18
Hans
Hallo Robert,
kann es sein, dass der Fehler am Dateiformat liegt?
Er tritt immer bei einer .xltm auf eine .xlsm läuft dagegen ohne Probleme.
MfG
Hans
auch mit .xltm geht es bei mir-Excel 2013..
13.12.2017 16:27:13
robert
AW: Fehler in der Messagebox
13.12.2017 18:44:28
onur
Bist du sicher, dass da wirklich 0 steht?
Erhöhe mal die Nachkommastellen.
AW: Fehler in der Messagebox
13.12.2017 19:05:27
Hans
Hallo den Antwortern,
ich habe gemerkt dass in Office 2007 das Makro mal Probleme macht, mal aber auch nicht. Ich kann nicht sagen woran das liegen kann.
Es werden Zahlen mit zwei Nachkommastellen berechnet. Ich habe einen Wert in CK19 (z.B. 133,80)und von diesem werden dann je nachdem einstellige- oder Zahlen mit Nachkommastellen abgezogen, bis der Wert in der Zelle CK19 den Wert 0,00 Erreicht. Dann erscheint die MsBox aber schon bei 0,00. Mal geht es ohne Meldung mal wird aber doch gemeldet. Warum weiß ich nicht.
Hab schon die Nachkommastellen auf 3,4 und 5 gestellt immer das selbe Ergebnis....
Hans
Anzeige
AW: Fehler in der Messagebox
13.12.2017 19:07:51
onur
poste mal die datei.
Nachtrag
13.12.2017 19:17:16
Hans
Hallo,
ich hab es gerade noch mal versucht.
Ich habe mal 2 kg Ankaufgewicht genommen und diese in kleine Ankäufe (Schrottarten) aufgeteilt. Dabei habe ich viele kleine Zahlen benutzt (0,20, 0,60, 0,20, 0,18, 0,71, 0,11 kg)
Dann erscheint die MsBox schon beim Erreichen der 0,00 in Zelle CK19. Rechne ich mit Maximal 0,50 kg, kommt die Meldung nicht...
Hans
AW: Nachtrag
13.12.2017 21:59:28
Rudi
Hallo,
dann ist das wahrscheinlich das klassische Rundungsproblem bzw. die interne Wandlung Dezimal zu Binär
If round(Range("CK19"),2) &lt 0 Then
Gruß
Rudi
@Rudi
14.12.2017 17:52:21
Hans
Hallo Rudi,
da gibt es nur ein kleines Problem. Nun wird mit Nachkommastellen super und richtig gerechnet. Aber, da die Tabelle beim Öffnen leer ist, bekomme ich gleich die Messagebox zu sehen.
Laufzeitfehler '13': Typen unverträglich
9 x auf Beenden klicken um Debugging zu beenden.
Dann gebe ich Werte in die Zelle für die erste Wiegung ein. Debugging Meldung wieder da.
1 x auf Beenden klicken, Debugging Meldung weg. Wert für die zweite Wiegung eingeben. Debugging Meldung wieder da.
1 x auf Beenden klicken, Debugging Meldung weg und ich kann dann ganz normal weiter machen...
Hier nochmal die Änderungen im Code
Private Sub Worksheet_Calculate()
If Round(Range("CK19"), 2) 
Und die Datei im Anhang
Hans
https://www.herber.de/bbs/user/118346.xlsm
Anzeige
AW: @Rudi
14.12.2017 18:05:04
onur

Private Sub Worksheet_Calculate()
If Range("CK19") = "" Then Exit Sub
If Round(Range("CK19"), 2) 

AW: @onur
14.12.2017 18:55:55
Hans
Hallo onur
Fehler beim Kompilieren: Syntaxfehler
Der Text ab If Range("CK19) ist rot markiert
Fehlt da nicht noch ein End If ?
Danke für den Tipp
Hans

Private Sub Worksheet_Calculate()
If Range("CK19") = "" Then Exit Sub If Round(Range("CK19"), 2)
AW: @onur
14.12.2017 19:12:03
onur
End if brauchst du nur, wenn die Bedingung über mehrere Zeilen geht.
Hast du das EXAKT so da stehen:If Range("CK19) ?
Wenn ja, fehlt da nicht noch ein Gänsefüsschen?
Anzeige
So steht es da
14.12.2017 20:18:37
Hans
Moin
Private Sub Worksheet_Calculate()
If Range("CK19") = "" Then Exit Sub
If Round(Range("CK19"), 2) 
Hab ich nun mindestens 10 x gelesen, ich finde nichts wo ein " fehlen sollte...
Hans
AW: So steht es da
14.12.2017 20:29:24
Daniel
Hi
ich würde das eher so schreiben:
If IsNumeric(Range("CK19").Value) Then
If Round(Range("CK19").Value, 2) 
damit überprüfst du generell ob der Inhalt in der Zelle eine Zahl ist oder In eine Zahl gewandelt werden kann.
Wenn du längere Codezeilen hier einstellst und die Codetags verwendest, musst du beachten, dass die Forensoftware dann automatisch längere Zeilen umbricht. Allerdings ist dieser Umbruch dann nicht passend zu dem was VBA braucht und verfälscht somit den Code!
es ist dann bei kürzeren Codes sinnvoller, auf die Codetags zu verzichten oder durch eigene umbrüche schon in VBA die Codezeilen so kurz zu machen, dass die Forensoftware da nicht eingreifen muss
(bei Messageboxen mach ich das in der Regel bei jedem von mir eingefügten vbLF, das macht dann auch für mich den den Code übersichtlicher)
aber wie ich in meinem anderen Beitrag schon schrieb:
ich würde hier auf den Code vollständig verzichten und die Meldung in einer Zelle per Formel erzeugen.
Gruß Daniel
Anzeige
@Daniel
14.12.2017 23:03:09
Hans
Hallo Daniel,
genau DAS war es gewesen.
Ich hab das alles so um und bei in 15 Rechnungen getestet und Gewichte mit 0,01kg gearbeitet...
Bis auf 0,00 runter NIX PASSIERT und dann -0,01kg MESSAGE BOX DA !!
PRIMA so wollte ich es haben
Vielen Dank
Hans
AW: So steht es da
14.12.2017 20:30:50
onur
Weil du das schriebst:
"Der Text ab If Range("CK19) ist rot markiert"
@onur
14.12.2017 23:12:34
Hans
Hallo onur,
das Makro von Daniel hat funktioniert.
Danke noch einmal für DEINE Mühe. Was wäre das Forum wenn es keine Antworter gäbe, die am Ball bleiben, bis eine Lösung gefunden wurde...
<pre>Private Sub Worksheet_Calculate()
If IsNumeric(Range("CK19").Value) Then
If Round(Range("CK19").Value, 2) < 0 Then
MsgBox "A C H T U N G !" & vbNewLine & "Ankaufgewicht ist höher als das Liefergewicht!"
& vbNewLine & "Bitte überprüfen Sie Ihre Eingaben!" & vbNewLine & "A C H T U N G es wird
keine Auszahlung berechnet!"
End If
End If
End Sub</pre>
Danke für die Hilfe
Hans
Anzeige
Unkomplizierter mit Formel
14.12.2017 19:25:07
Daniel
Hi
solche Meldungen würde ich nicht per Code ausgeben, sondern per Formel in einer Zelle, optisch ggf. unterstützt durch eine Umfärbung mit Bedingter Formatierung.
Oberhalb der Notitzen hättest du noch Platz.
das braucht weniger Rechenleistung und nervt auch nicht durch ständige Meldungen.
Außerdem bleibt die Meldung solange sichtbar, bis das Problem behoben ist.
Gruß Daniel
AW: Unkomplizierter mit Formel
14.12.2017 20:22:57
Hans
Hallo Daniel,
du meinst solch eine Meldung die erscheint, wenn das 1. Wiegegewicht kleiner ist als das 2. Wiegegewicht?
Gib mal in der ersten Wiegung 500 und in der zweiten Wiegung 600 ein.. Dann kommt eine Meldung darunter..
Hans
Anzeige
Nachtrag
14.12.2017 20:28:13
Hans
Hallo Daniel,
mit dem Gedanken hab ich auch schon gespielt. Ausprobiert hab ich es eben gerade mal.
Eine Messagebox ist dennoch besser, da diese direkter ins Auge springt....
Hans
AW: Nachtrag
14.12.2017 20:32:11
Daniel
das hängt davon ab, wo du diese Formel mit der Meldung platzierst und wie du die Zelle formatierst.
wie gesagt, in deiner Datei hättest du unterhalb der Berechnung einen idealen Platz.
Über die Bedingte Formatierung kannst du dann ja auch größere Zellbereiche rot werden lassen oder das Ergebnis ausblenden, wenn es dann nicht sinnvoll ist.
Gruß Daniel
Formeln
14.12.2017 21:16:47
Hans
Hallo Daniel,
was hältst du davon?
Zelle CC21:=WENN($CK$17>$CK$16;"A C H T U N G !";WENN($CK$19"A C H T U N G !";WENN(CK19=0;"A C H T U N G !";"")))
Zelle CC22: =WENN($CK$17>$CK$16;"Das Gewicht der zweiten Wiegung ist höher";WENN($CK$19"Das Ankaufgewicht ist höher als";WENN(CK19=0;"Maximales Ankaufgewicht erreicht !")))
Zelle CC23: =WENN($CK$17>$CK$16;"als das Gewicht der ersten Wiegung !";WENN($CK$19as Anliefergewicht !";""))
Zelle CC24: =WENN($CK$17>$CK$16;"Bitte korregieren Sie Ihre Eingabe !";WENN($CK$19"Bitte korregieren Sie Ihre Eingabe !";""))
So stehen die Meldungen ALLE unterhalb des "Wiegeformular"
Hans
Anzeige
AW: Formeln
14.12.2017 21:25:23
Daniel
Hi
ich muss damit ja nicht arbeiten.
wie gesagt, er Vorteil ist, dass die Meldung so lange sichtbar ist, wie das Problem besteht.
beachte nur, dass du mit den Formeln kein Format bestimmen kannst.
Wenn bei unterschiedlichen Werten die einzelnen Zellen unterschiedlich formatiert sein sollen, müsstest du das über die Bedingte Formatierung erledigen.
Gruß Daniel
L Ö S U N G
14.12.2017 23:14:30
Hans
Hallo,
folgender Code führte zur Lösung des Problems
Private Sub Worksheet_Calculate()
If IsNumeric(Range("CK19").Value) Then
If Round(Range("CK19").Value, 2) 

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige