Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Excel VBA Class nach FB OOP umsetzen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RWK



Anmeldungsdatum: 04.07.2011
Beiträge: 44

BeitragVerfasst am: 05.12.2013, 12:02    Titel: Excel VBA Class nach FB OOP umsetzen Antworten mit Zitat

Tag,

ich hätte da mal wieder ein Problem:

Ich habe bisher in Excel eine Einkommensteuerberechnung
in der habe ich ein Klasse der übergebe ich die notwendigen Informationen zur Einkommensteuerberechnung.
Diese Klasse benutzt dann anhand des übergebenen Jahres seinerseits die entsprechende Klasse zur Berechnung der Einkommensteuer des geforderten Jahres. Tuts gut.
Aber wie überführe ich das ganze in hübsches FreeBasic ?

Speziell geht es mir darum wie ich ein Obekt 'ESt' erzeuge, an das ich dann die entsprechende Funktion zur Berechnung hänge?

Code:
Private Sub Berechne()
    Dim x               As Long
   
    If mTabelle < 1 Or mTabelle > 2 Then Exit Sub
    If mZve < 1 Then Exit Sub
    x = mZve
   
    Select Case mJahr
        Case Is = 2000
            Set est = New classESt2000
        Case Is = 2001
            Set est = New classESt2001
        Case Is = 2002, 2003
            Set est = New classESt2002
        Case Is = 2004
            Set est = New classESt2004
        Case Is = 2005, 2006
            Set est = New classESt2005
        Case Is = 2007, 2008
            Set est = New classESt2007
        Case Is = 2009
            Set est = New classESt2009
        Case Is = 2010, 2011, 2012
            Set est = New classESt2010
        Case Is = 2013
            Set est = New classESt2013
        Case Is >= 2014
            Set est = New classESt2014
        Case Else
            MsgBox "Es sind nur die Jahre ab 2000 unterstützt...", vbOKOnly, "Achtung, Achtung"
    End Select
                   
    est.Tabelle = mTabelle
   
    If mWaehrung = EUR And mJahr < 2002 Then x = x * 1.95583
    If mWaehrung = DEM And mJahr > 2001 Then x = x / 1.95583
   
    est.zvE = CLng(x)
    mSteuer = est.steuer
    mSolZ = est.SolZ
   


Vielleicht hat wer auf Anhieb einen Ansatz wie man sowas schön gestaltet !?

Achso, vielleicht noch zur Aufklärung. Nach Übergabe eines Wertes an est.zvE = x berechnet die Class direkt die Steuer. Also kann ich danach die berechneten Werte abholen (mSteuer = est.steuer)

Grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 05.12.2013, 17:16    Titel: Antworten mit Zitat

Es gibt grundsätzlich 3 Möglichkeiten das umzusetzen.
- Prozedual
- mit Klassen und Vererbung
- Mit einer Klasse ohne Vererbung

Das was am besten ist, hängt davon ab wie lang und komplex die eigentliche Berechnung ist und letztlich von deiner Art zu programmieren.

Klassen haben den größten Nutzen, wenn du wirklich die komplette Palette an Funktionen nutzt bzw. das Programm damit erweitern willst: also Vererbung / Properties / private und public / overloading / cast

Wenn die eigentliche Berechnung aus ein paar Funktionen besteht, die insgesamt vielleicht 100-200 Zeilen beinhalten kannst du komplett auf Klassen verzichten und mit nur einem Modul arbeiten.
Dann reicht vielleicht schon folgende Struktur


Code:
Type EStType
   zve As Double
   steuer As Double
   solz As Double
   jahr As Integer
   waehrung As String *3   
End Type

Sub Berechne2000(ByRef est As EStType)
'...
End Sub

Sub Berechne2001(ByRef est As EStType)
'...
End Sub

Sub Berechne2002_2003(ByRef est As EStType)
'...
End Sub

Function BerechneESt(zve As Double, jahr As Integer, w As String="EUR") As EStType
   Dim est As EStType
      
   est.zve = zve
   est.jahr = jahr
   est.waehrung = w
      
   Select Case jahr
      Case Is = 2000
         Berechne2000 est
      Case Is = 2001
         Berechne2001 est
      Case Is = 2002, 2003
         Berechne2002_2003 est
      Case Is = 2004        
      Case Is = 2005, 2006        
      Case Is = 2007, 2008        
      Case Is = 2009        
      Case Is = 2010, 2011, 2012        
      Case Is = 2013        
      Case Is >= 2014        
      Case Else
         Print "Es sind nur die Jahre ab 2000 unterstützt...", "Achtung, Achtung"
   End Select
End Function
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz