Wenn die immer 0 anzeigen, dann muss zwangsläufig bei
curPreisEK = intAnzahl * intGroesse * curFarbe * 0.052
curPreisEK immer 0 ergeben.
Folglich muss auf der rechten Seite mindestens eine der Variablen stehts 0 sein.
=> Die Frage lautet also nun: Warum ist das so - Zellenwerte ok?
In Indiz wäre, dass diese Werte erst nach erstmaligem Klick mit einem (gültigen) Wert initialisiert werden.
Noch etwas:
Public intGroesse As Integer
'Public Function Groesse(ByVal intGroesse As Integer) As Integer
'
' Select Case Groesse
'
' Case btnStdQuer.Value = True
' intGroesse = [J10]
'
' Case btnStdHoch.Value = True
' intGroesse = [J10]
'
' Case btnGrossQuer.Value = True
' intGroesse = [J11]
'
' Case btnGrossHoch.Value = True
' intGroesse = [J11]
'
' End Select
'End Function
1) Select Groesse hat immer automatisch den Fall 0.
Die Verwendung ist dort völlig falsch (mir ist schleierhaft was du da beabsichtigst). Es müsste wohl ehern Select intGroesse lauten und in den einzelnen Fällen dann z.B. Groesse = [J11]
2) Du glaubst vielleicht du änderst in diesem Fall die als Public deklarierte Variable intGroesse in Wahrheit ändest du aber der Wert des Parameters intGroesse (also dem Teil mit ByVal davor). Dadurch das diese beide Angaben gleich heißen, beziehst du dich automatisch auf die nächstliegende Angabe (also die innerhalb der aktuellen Funktion) und das ist nun halt der Parameter und nicht die globale Variable. Dazu kommt das der Parameter ByVal übergeben wird und damit eine Änderung des Parameters nach außen hin keinerlei Wirkung hat.
Du solltest, wenn du schon globale Variablen verwendest, diesen einen Präfix geben um genau diese Art von Problem zu vermeiden.
(Warum die Public verwendest verstehe ich zudem auch nicht, dadurch könnte außerhalb der Form an jeder Stelle dieser Wert "versehentlich" manipuliert werden und das ist nie gut).
Üblich ist z.B. für modulare Variablen ein m, für globale ein g (der Unterschtrich ist Ansichtssache):
Private m_intGroesse As Integer
3)
Public curFarbe, curPreisEK, curPreis1, curPreis2, curPreis3 As Currency
Nur curPreis3 ist von Datentyp her Currency, alle andere davor sind vom Datentyp Variant (typischer Anfängerfehler). ;)
4) Die Schreibweise w.z.b. [J11] ist veraltet und zudem etwas langsamer als die übliche Variante - Range("J11").
Gruß
|