Thema Datum  Von Nutzer Rating
Antwort
15.08.2018 15:11:59 Clemens
NotSolved
15.08.2018 18:12:10 xlKing
Solved
15.08.2018 21:46:18 xlKing
NotSolved
16.08.2018 00:51:59 Ulrich
NotSolved
19.08.2018 15:23:49 xlKing
NotSolved
23.08.2018 20:42:59 Clemens
NotSolved
Rot UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren
25.08.2018 13:54:08 Gast62780
NotSolved

Ansicht des Beitrags:
Von:
Gast62780
Datum:
25.08.2018 13:54:08
Views:
1166
Rating: Antwort:
  Ja
Thema:
UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren

Hallo Clemens,

genau das ist dein Problem: du betrachtest aber alle Nachkommastellen!

 

Ich gehe davon aus, dass es sich um Zahlen (im Gegensatz zu Zeichenketten/Wörtern) dreht.

Ob dich die Nachkommastellen interessieren oder nicht, ist dem Computer egal. Sobald du Zahlen auf Gleichheit / Ungleichheit überprüfst, wird die gesamte Zahl mit allen zur Verfügung stehenden Nachkommastellen verglichen.

Das bedeutet für dich: da dich nur eine bestimmte Anzahl an Nachkommastellen interessiert, mussst du beim Vergleich dafür sorgen, dass nicht alle Nachkommastellen Einfluss auf das Ergebnis haben.

Hier ein Beispiel wie man es nicht macht (und du es im Augenblick aber machst): In A1 trage ich eine Formel ein, deren analytisches Ergebnis exakt 0,1 ist. Mich interessiert also nur eine Nachkomastelle. Dann frage ich ob der Wert der Zelle 0,1 ist:

Sub Beispiel()
Range("A1").Formula = "=1.12/11.2"
If Range("A1").Value <> 0.1 Then MsgBox "A1 <> 0,1"
If Range("A1").Value = 0.1 Then MsgBox "A1 = 0,1"
If Range("A1").Value < 0.1 Then MsgBox "A1 < 0,1"
If Range("A1").Value > 0.1 Then MsgBox "A1 > 0,1"

Range("A2").Value = 0.1
Range("A3").Formula = "=A1=A2"
MsgBox "A1 = A2 ist " & (Range("A1") = Range("A2"))

End Sub

Was sagt dein Excel zum Zellwert in Zelle A1? Ist er gleich 0,1, ungleich, größer als oder kleiner als?

Was kommt beim Vergleich der Zellinhalte von A1 und A2 heraus? Gibt es Unterschiede zwischen VBA und der Formel in A3?

Führe ich das Beispielmakro bei mir aus, kommt heraus, dass der Zellwert in A1 nicht exakt 0,1 ist.

Die Problemetik besteht in VBA bei allen Zahlen, die Kommastellen haben - egal wie viele Kommastellen!

Die Problematik besteht übrigens auch auf dem Tabellenblatt (bei mir wird in A3 zwar "WAHR" angezeigt, das ist aber mehr oder weniger Zufall!). Dieses Beispiel ist kein Beweis dafür, dass die Problematik auf dem Tabellenblatt ohne VBA nicht bestünde.

Daher die Regel: ist eine Variable nicht als Integer oder Long deklariert, darf man sie nicht mit dem Gleichheitszeichen oder dem Ungleichheitszeichen vergleichen!

Verstößt man gegen diese Regel führt das in manchen Fällen zu falschen Ergebnissen.  Und dann versteht niemand, weshalb die Ergebnisse falsch sind (solche Fehler sind immens schwer zu finden!).

Das darfst du nicht unter den Teppich kehren, sondern es jetzt ein Mal begreifen und niemals vergessen ;-) .

 

Zu den msgboxes, die ich beim letzten Post benutzt habe: Ja, stimmt im VBA-Editor kann man so viele Nachkommastellen nicht benutzen. Ich hätte erwähnen sollen, dass sie dafür gedacht waren, sie im Direktfenster zu benutzen. Sorry!

 

Grüße, Ulrich


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
15.08.2018 15:11:59 Clemens
NotSolved
15.08.2018 18:12:10 xlKing
Solved
15.08.2018 21:46:18 xlKing
NotSolved
16.08.2018 00:51:59 Ulrich
NotSolved
19.08.2018 15:23:49 xlKing
NotSolved
23.08.2018 20:42:59 Clemens
NotSolved
Rot UDF Werte auf Ungleichheit prüfen und Leerzellen ignorieren
25.08.2018 13:54:08 Gast62780
NotSolved