runden mit VBA in Access funzt net

  • #1
B

Black Panter

Bekanntes Mitglied
Themenersteller
Dabei seit
20.07.2005
Beiträge
138
Reaktionspunkte
0
ich hab folgenden code:

Code:
Option Compare Database

Option Explicit

Dim größe, gewicht As Integer
Dim idealgewicht As Double

Private Sub Form_Load()

lbl_Aussage.Caption = NotDefinied

End Sub

Private Sub cmd_Berechnen_Click()

txt_Gewicht.SetFocus
gewicht = CInt(txt_Gewicht.Text)
txt_Größe.SetFocus
größe = CInt(txt_Größe.Text)
txt_Idealgewicht.SetFocus
idealgewicht = CDbl(0.9 * (größe - 100))

txt_Idealgewicht.Text = CStr(idealgewicht)

If (gewicht > (1.1 * idealgewicht)) Then
lbl_Aussage.Caption = Sie sind zu dick!
lbl_bmi.Caption = Round(txt_Gewicht / ((txt_Größe / 100) ^ 2), [1])
ElseIf (gewicht < (0.9 * idealgewicht)) Then
lbl_Aussage.Caption = Sie sind zu dünn!
lbl_bmi.Caption = Round(txt_Gewicht / ((txt_Größe / 100) ^ 2), [1])
Else
lbl_Aussage.Caption = Sie wiegen genau Richtig!
lbl_bmi.Caption = Round(txt_Gewicht / ((txt_Größe / 100) ^ 2), [1])
End If

End Sub
Private Sub cmd_Wdh_Click()

txt_Größe.Text = 
txt_Idealgewicht.Text = 
txt_Gewicht.Text = 
txt_Aussage.Caption = 

End Sub
Private Sub cmd_Beenden_Click()

End

End Sub

das funktioniert soweit auch alles bis auf die round funktion....

weiß net wieso udn mein info lehrer kann mri auch net helfen....
 
  • #2
Public Function UBKRunden(Zahl, intStellen As Integer)
On Error GoTo ERR_UBKRunden

Dim intFact As Long
Dim addFact As Double
Dim intZahl As Double: intZahl = Zahl

Select Case intStellen
Case 0
addFact = 0.01
Case 1
addFact = 0.05
Case 2
addFact = 0.005
Case 3
addFact = 0.0005
Case 4
addFact = 0.00005
Case 5
addFact = 0.000005
Case Else
addFact = 0.0000005
End Select
If Zahl < 0 Then
addFact = addFact * -1
End If
intFact = intZahl * 10 ^ intStellen + addFact
UBKRunden = Int(intFact) / 10 ^ intStellen
Exit Function

ERR_UBKRunden:

MsgT2 = Runden-Funktion

Msg = Err.Description & vbCrLf & vbCrLf
Msg = Msg & cst_FehNr & Err & cst_FehZl & Erl
MsgBox (Msg), vbOKOnly, MsgT1 & cst_ER3 & MsgT2

Resume Next
Exit Function

End Function

Deinen Code hab ich nicht überprüft, doch ACCESS hat in allen Versionen den Bug, Zahlen nicht richtig zu Runden. Das obenstehende Beispiel übernimmt eine Zahl und in Abhängigkeit von den Nachkommastellen addiert es auf die nächst weitere Stelle eine 5 um kaufmännisch zu Runden. Danach wird die Zahl auf +/- überprüft und wieder mit ihrem richtigen Vorzeichen versehen.

Funktioniert bei allen positiven und negativen Zahlen bis zu einer Nachkommazahl von 6 Stellen einwandfrei und vermutlich auch bei größeren Nachkommastellen.

Wird von mir seit Jahren bei allen kritischen Rechenoperationen eingesetzet.

Die Error-Routine ist auch eine Eigenkonstruktion, wird aber hier nicht weiter erläutert, kann man selbst stricken.

Gruß
Kurt
 
Thema:

runden mit VBA in Access funzt net

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben