Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Funktion für Zinssatz
01.06.2018 18:04:50 IFinance
NotSolved

Ansicht des Beitrags:
Von:
IFinance
Datum:
01.06.2018 18:04:50
Views:
1041
Rating: Antwort:
  Ja
Thema:
VBA Funktion für Zinssatz

Schönen Freitag Abend,

ich komme bei meinem Code leider nicht weiter. Bin noch ein anfänger und schon echt am zweifeln. Ich beschreibe das Problem:

Ich muss per Code eine Funktion erstellen, welche den Zinssatz eines Sparkontos ausrechnet. Hierfür habe ich auch schon einen leeren Buchungssatz angelegt, welcher benutzt werden kann, um am Ende des Jahres die Zinsen zu berechnen.

Jetzt fehlt mir als Aufgabe noch die Zinsen zu berechnen und in die leeren Buchungssätze zu buchen.

Ich weiß leider nicht, wie ich mich auf die Leeren Buchungssätze mit der Zinsrechnung beziehen soll.

 

Danke im Voraus


Option Explicit

Private prv_objBuchungen() As CM_Buchung
Private prv_lngAnzBuchungen As Long

Private prv_intJahre() As Integer
Private prv_lngJahrStart() As Long
Private prv_lngAnzJahre As Long

Private Sub Class_Initialize()
    prv_lngAnzBuchungen = 0
End Sub

Private Sub Class_Terminate()
    Dim i As Long
    For i = 1 To prv_lngAnzBuchungen
        Set prv_objBuchungen(i) = Nothing
    Next i
End Sub

Property Get AnzBuchungen() As Long
    AnzBuchungen = prv_lngAnzBuchungen
End Property

Property Get objBuchungen(lngIndex As Long) As CM_Buchung
    Set objBuchungen = prv_objBuchungen(lngIndex)
End Property
Property Get lngAnzJahre() As Long
    lngAnzJahre = prv_lngAnzJahre
End Property
Property Get intJahre(lngIndex As Long)
    intJahre = prv_intJahre(lngIndex)
End Property
Property Get lngJahrEnde(lngIndex As Long)
    lngJahrEnde = prv_lngJahrStart(lngIndex)
End Property

Public Function add(datDatum As String, _
                    dblBetrag As String, _
                    strInfo As String, _
                    Optional blnCheckJahr As Boolean = True)
    
    Dim blnNeuesJahr As Boolean
                        
    blnNeuesJahr = False
    
    If blnCheckJahr Then
        If prv_lngAnzBuchungen = 0 Then
            prv_lngAnzJahre = 1
            ReDim prv_intJahre(1 To prv_lngAnzJahre)
            ReDim prv_lngJahrStart(1 To prv_lngAnzJahre)
            prv_intJahre(prv_lngAnzJahre) = Year(datDatum)
            prv_lngJahrStart(prv_lngAnzJahre) = prv_lngAnzBuchungen + 1
            blnNeuesJahr = True
        End If
        
        If prv_intJahre(prv_lngAnzJahre) <> Year(datDatum) Then
            prv_lngAnzJahre = prv_lngAnzJahre + 1
            ReDim Preserve prv_intJahre(1 To prv_lngAnzJahre)
            ReDim Preserve prv_lngJahrStart(1 To prv_lngAnzJahre)
            prv_intJahre(prv_lngAnzJahre) = Year(datDatum)
            
            Call Me.add(DateSerial(prv_intJahre(prv_lngAnzJahre - 1), 12, 31), 0, "Zinsen", False)
            
            prv_lngJahrStart(prv_lngAnzJahre) = prv_lngAnzBuchungen + 1
            
            blnNeuesJahr = True
        End If
    End If
    
    prv_lngAnzBuchungen = prv_lngAnzBuchungen + 1
    ReDim Preserve prv_objBuchungen(1 To prv_lngAnzBuchungen)
    Set prv_objBuchungen(prv_lngAnzBuchungen) = New CM_Buchung
    
    With prv_objBuchungen(prv_lngAnzBuchungen)
        .datDatum = datDatum
        .dblBetrag = dblBetrag
        .strInfo = strInfo
        If blnNeuesJahr Then
            .dblKtoStand = dblBetrag
        Else
            .dblKtoStand = prv_objBuchungen(prv_lngAnzBuchungen - 1).dblKtoStand + dblBetrag
        End If
    End With
    
End Function

Public Function insert(lngPos As Long, _
                       datDatum As String, _
                       dblBetrag As String, _
                       strInfo As String)
         
    prv_lngAnzBuchungen = prv_lngAnzBuchungen + 1
    ReDim Preserve prv_objBuchungen(1 To prv_lngAnzBuchungen)
    Set prv_objBuchungen(prv_lngAnzBuchungen) = New CM_Buchung
    
    Call shiftRight(lngPos)
    
    With prv_objBuchungen(lngPos)
        .datDatum = datDatum
        .dblBetrag = dblBetrag
        .strInfo = strInfo
    End With
    
End Function

Private Sub shiftRight(lngPos As Long)
    Dim objBuchungen As CM_Buchung
    Dim i As Long
    
    Set objBuchungen = prv_objBuchungen(prv_lngAnzBuchungen)
    
    For i = prv_lngAnzBuchungen To lngPos + 1 Step -1
        Set prv_objBuchungen(i) = prv_objBuchungen(i - 1)
    Next i
    
    Set prv_objBuchungen(lngPos) = objBuchungen
    
    Set objBuchungen = Nothing
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Funktion für Zinssatz
01.06.2018 18:04:50 IFinance
NotSolved