runden mit VBA in Access funzt net

Dieses Thema runden mit VBA in Access funzt net im Forum "Windows XP Forum" wurde erstellt von Black Panter, 14. Okt. 2007.

Thema: runden mit VBA in Access funzt net ich hab folgenden code: Option Compare Database Option Explicit Dim größe, gewicht As Integer Dim idealgewicht As...

  1. 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
     
Die Seite wird geladen...

runden mit VBA in Access funzt net - Ähnliche Themen

Forum Datum
Excel Betrag in 0,05er Schritten runden Microsoft Office Suite 13. Apr. 2013
Excel - Ergebnis immer aufrunden Windows XP Forum 26. Nov. 2012
Fotoecken abrunden Software: Empfehlungen, Gesuche & Problemlösungen 21. Apr. 2012
Windows aus Sicherheitsgründen blockiert ? Viren, Trojaner, Spyware etc. 19. Dez. 2011
Excel 2003: Runden nach meinen Vorgaben Windows XP Forum 29. Apr. 2008