Anzeige
Archiv - Navigation
144to148
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
144to148
144to148
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

1 ist ungleich 1: Warum ?

1 ist ungleich 1: Warum ?
07.08.2002 07:50:49
MAlexander
Guten Morgen, Mädels und Jungs.

Wer kann mich bitte mal auf den richtigen Weg bringen ?

In einer ComboBox werden beliebige Datensätze (also Teile davon) angezeigt.
In einer der Spalten befinden sich %-Angaben.
Das nur nebenbei.

Für die %-Sätze, die (logisch) aus einem Arbeitsblatt kommen (Format: Prozent mit 2 Nachkommastellen) führe ich ein Array nebenbei:
Dim arr() As Double

Wenn ich die ComboBox fülle, schreibe ich sofort auch die %-Sätze in das Array, was dann folgendermaßen aussieht:

arr(1) = 0.10 für 10 % usw.

Dieser Wert wird nun formatiert in der ComboBox dargestellt. Diese ComboBox-Prozente können nun geändert werden.
Bei der Änderung bringe ich die Eingaben auf das "normale" %-Format und ändere entsprechend arr(x).

So.

Beim Beenden der ComboBox addiere ich alle Elemente von arr.
Diese Summe schreibe ich in das Arbeitsblatt und erhalte 100%. Klasse.
Die Summe selbst ist 1.
Geprüft, Super und stimmt.

Da ich aber möchte, daß mir in der ComboBox angezeigt wird, wenn eine Abweichung von 100 % besteht (also größer oder kleiner), habe ich folgende Routine geschrieben:

Sub ProzentFehlerAnzeige(Wert As Double)

With PR_Verwaltung.Prozentfehler
.Visible = False
If (Wert <> 1#) Then .Visible = True
End With

End Sub

... und Wert im Überwachungsfenster anzeigen lassen und siehe da: "Wert" ist 1.

Warum, bitte, läuft er aber immer in den Zweig .visible = true

Irgendwann in "grauer Vorzeit" hat es schon mal geklappt.

Für Eure Hilfe danke ich Euch im voraus.

MAlexander

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: 1 ist ungleich 1: Warum ?
07.08.2002 08:39:09
Michael Scheffler
Hallo,

Wert ist bestimmt nicht 1! Man testet bei Real-Zahlen nicht auf ganze Werte, sondern nimmt eine Fehlerschranke, bei Dir z.B. 1e-3.

Dann testet man die Differenz von Wert und 1 und das muss ungleich Fehlerschranke sein:

Gruß

Micha

Re: 1 ist ungleich 1: Warum ?
07.08.2002 08:56:54
MAlexander
Hallo, Micha.

Getan wie geheißen: aber auch diese Möglichkeit ist gescheitert.
Vielleicht noch kurz zur Erläuterung:

Bevor "Wert" gefüllt wird erfolgt: Wert = 0#
Die Prozentsätze im Arbeitsblatt (spaßeshalber mit 33 Nachkomma-
stellen) sehen alle wie folgt aus: xx,xx
Es gibt auch keine versteckte 3. Nachkommastelle.

Das Ergebnis 1 steht definitiv im Überwachungsfenster.
Folgende Angabe im Direktbereich
?format(wert,"0000.000000000000000000000000000000000")
führt zu: 0001.000000000000000000000000000000000
(es sind 33 Nachkommastellen.

Das ist eigentlich auch klar: wenn ich 1000 Zahlen mit maximal
2 Nachkommastellen addiere, wird das Ergebnis auch immer nur 2
Nachkommastellen haben.

Trotzdem schönen Dank - einen Versuch war's allemal wert.

MAlexander

Anzeige
Re: 1 ist ungleich 1: Warum ?
07.08.2002 09:29:38
Michael Scheffler
Hallo,

das ist nicht richtig, egal, wie viel Nachkommastellen DU angibst, es hängt immer vom verwendeten Typ der VBA-Zahlen ab, ab welcher Stelle, der Fehler beginnt.

Gruß

Micha

Re: 1 ist ungleich 1: Warum ?
07.08.2002 09:38:43
Michael Scheffler
Hallo,

mach mal folgenden Test:

Und setze mal für Wert an Stelle der "1" eien "1.01", "1.001" usw.
Bei der 13. Null wird Excel noch funzen, aber der 14. Macht es aus der Zahl eine "1#".

Um Dein Problem zu lösen, würde ich mit Gannzahlenm rechnen - Integer, Long, Byte

Gruß

Micha

Re: 1 ist ungleich 1: Warum ?
07.08.2002 10:51:24
MAlexander
Moin,

wahrscheinlich hast Du recht.
Diese Quarkerei mit Single/Double - zwar manchmal ganz praktisch
aber doch wohl auch ziemlich fehlerbehaftet.
Ich mach das jetzt so wie klein Fritzchen sich das vorstellt:
CSTR(Wert) und dann gegen ein (variables) Literal prüfen, grrrrrrrrrrrrrrrrr.

Nochmals schönen Dank

MAlexander

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige