4.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo ihr lieben!

Ich sitze schon wieder an einem neuen Problem:

Ich habe folgenden Code:


urbetrag = Range("b11")

While urbetrag - 0.01 > 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend

While urbetrag - 0.01 = 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend

Range("B17") = d


Wenn in B11 also in urbetrag "0,01" steht, müsste d=1 sein, d ist aber 0.

Warum?

Vielleicht habt ihr ja eine Lösung.
Besten Dank schonmal im Voraus!

15 Antworten

0 Punkte
Beantwortet von andreas1956 Experte (2.8k Punkte)
Hallo!

1. Warum solte das nicht -0- sein?
2. Was ist das für eine komische Schrift in der Codebeschreibung?
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo mcscool88,

wenn Du Deine Variablen ordnungsgemäß deklarierst, stimmt auch das Ergebnis.

Option Explicit

Sub test()
Dim urbetrag As Double, d As Integer
urbetrag = Range("b11")
While urbetrag - 0.01 > 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend
While urbetrag - 0.01 = 0
urbetrag = urbetrag - 0.1
d = d + 1
Wend
Range("B17") = d
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von
Hallo!

ich habe mein Problem vielleicht nicht ausreichend genau erklärt. Deshalb nun hier die Datei:

rapidshare.com/files/323878474/Automat.xlsm

Ist denke/hoffe ich selbsterklärend. Der Urbetrag wird einfach nicht immer richtig auf die Münzstückelung aufgeteilt.

Ich bedanke mich schon mal im Voraus und entschuldige mich gleichzeitig für die vielleicht etwas wüste Art der Programmierung. :D
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

Deine Macros bedürfen einer gründlichen Optimierung, leider habe ich keine Zeit dazu.
Trotzdem ein Hinweis:

Dim s, t, u, v, w, x, y, z As Integer

Diese Deklaration ist falsch, hierbei wird nur die Variable z als Integer deklariert, alle anderen als Variant.
Wenn ich Dein Makro richtig deute, müsste aber der Typ Double eingesetzt werden.

Also in der Art

Dim a as Double
Dim b as Double
Dim c as Double
Dim c as Double
usw.

Gruß
Rainer
0 Punkte
Beantwortet von
Danke Rainer!

ich probier das gleich mal aus!
0 Punkte
Beantwortet von
Hallo nochmal!

ich hab die Variablen nun einzeln als Double dimensioniert.
Macht im nachhinein auch Sinn, danke für den tipp. Excel hat zwar vorher auch nicht gemeckert, aber so kommen wir der Sache schonmal näher.

Leider stimmen die Berechnungen immer noch nicht.
Weißt du oder vielleicht noch wer anders, woran es liegt?
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

wie schon gesagt, mir fehlt die Zeit und vor allem auch die Lust, Deine Makros zu analysieren.

Übrigens, solche Sachen erledige ich grundsätzlich viel einfacher mit Formeln.

Anbei ein Beispiel für Euro, was sich auch für andere Währungen erweitern lässt.


Formelbeispiel

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer!

Danke für deine Version meines Münzwechslers.
Der Ansatz das Problem nur mit Formeln zu lösen, scheint mir auch sinnvoller zu sein aber leider habe ich gewisse Vorgaben.
Ich darf zum Beispiel nicht das Layout verändern und die Berechnungen sollen per Makro durchgeführt werden :D

Aber trotzdem Vielen Dank für deine Hilfe
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo

habe nun doch Deine Makros mal etwas umgekrempelt.
Es ist zwar noch nicht das Optimum, aber es funktioniert.

geänderte Datei

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

anbei noch eine weitere Optimierung.

optimierte Version

Gruß
Rainer
...