VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "clsMittelwert" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Private Ringpuffer() As Double Private mlngZeiger As Long Private mlngAnzahl As Long Private mlngMax As Long ' Setze die Größe des Ringpuffers Public Sub setMax(lngMax As Long) If lngMax < mlngZeiger Then mlngZeiger = 0 End If If lngMax < mlngAnzahl Then mlngAnzahl = lngMax End If mlngMax = lngMax ReDim Preserve Ringpuffer(lngMax) End Sub ' löscht den Ringpuffer. Der Mittelwert wird 0 Public Sub Clear() mlngAnzahl = 0 mlngZeiger = 0 End Sub Public Sub AddWert(dblWert As Double) Dim i As Long If mlngZeiger < mlngMax Then mlngZeiger = mlngZeiger + 1 Else mlngZeiger = 1 End If If mlngAnzahl < mlngMax Then For i = 1 To mlngMax Ringpuffer(i) = dblWert ' Debug.Print i & "=" & Ringpuffer(i) mlngAnzahl = mlngAnzahl + 1 Next End If Ringpuffer(mlngZeiger) = dblWert ' Debug.Print "anzahl= " & mlngAnzahl ' Debug.Print "zeiger= " & mlngZeiger ' Debug.Print "max= " & mlngMax End Sub Public Function GetWert() As Double Dim lngZeiger As Long Dim lngSumme As Double ' Debug.Print "---GetWert---" For lngZeiger = 1 To mlngAnzahl ' If lngZeiger = mlngZeiger Then ' Debug.Print lngZeiger & "=" & Ringpuffer(lngZeiger) & " <= " ' Else ' Debug.Print lngZeiger & "=" & Ringpuffer(lngZeiger) ' End If lngSumme = lngSumme + Ringpuffer(lngZeiger) Next If mlngAnzahl > 0 Then GetWert = lngSumme / mlngAnzahl End If End Function Private Sub Class_Initialize() mlngMax = 10 ReDim Ringpuffer(mlngMax) End Sub