Hilfe gesucht zu Function in einem Formular

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Quarktasche.

    Hilfe gesucht zu Function in einem Formular

    Sehr geehrte Damen und Herren,

    ich Programmiere derzeit an einer umfangreicheren Aufgabe bei der über ein Excel-Tabellenblatt aber auch über ein Formular diverse Rechnungen durchgeführt werden sollen.

    Beim Fomular hänge ich nun derzeit an folgenden Problem.
    Ich rufe im Formular eine Funktion auf die ich auch im Formular programmiert habe. In der Funktion verwende ich Variablen, die ich davor im Programm aufgerufen habe. Diese sind jedoch in der Funktion im Formular komischerweise nicht übergeben. Habe jetzt schon alles versucht aber irgendwie klappts nicht. Hier eventuell Programmschnipsel die das verdeutlichen.

    Programm:

    Visual Basic-Quellcode

    1. ElseIf (ListBox1.Selected(1) = True) And CheckBox2.Value = True Then
    2. 'Variablendeklaration
    3. Dim lauf As Integer
    4. Dim fkt As Double
    5. Dim fktStrich As Double
    6. Dim eps As Double
    7. Dim TKausStart As Double
    8. Dim delta As Double
    9. 'Umformen der Variablen in Typ Double
    10. A = TextBox9.Text
    11. TKein = CDbl(TKein)
    12. TWein = CDbl(TWein)
    13. MK = CDbl(MK)
    14. MW = CDbl(MW)
    15. A = CDbl(A)
    16. Cpw = CDbl(Cpw)
    17. Cpk = CDbl(Cpk)
    18. k = CDbl(k)
    19. TKausStart = TKein + TWein
    20. TKausStart = TKausStart / 2
    21. delta = 0.00001
    22. eps = 0.001
    23. TKaus = TKausStart
    24. 'Berechnung
    25. fkt = fun(TKausStart)
    26. For lauf = 1 To 50
    27. fktStrich = (fun(TKaus + delta) - fun(TKaus)) / delta
    28. TKaus = TKaus - fkt / fktStrich
    29. fkt = fun(TKaus)
    30. 'Ausgabe
    31. If (Abs(fkt) < eps) Then GoTo Ausgabe


    Funktion:

    Visual Basic-Quellcode

    1. Function fun(TKaus)
    2. 'TWaus = ((-1 * MK * Cpk) / (MW * Cpw) * (TKaus - TKein)) + TWein
    3. TWaus = TWein - ((MK * Cpk) * (TKaus - TKein) / (MW * Cpw))
    4. If (TWaus - TKaus) < 0 Then
    5. deltaTlog = ((TWein - TKein) - (TWaus - TKaus)) / (Log((TWein - TKein) / (Abs(TWaus - TKaus))))
    6. Else
    7. deltaTlog = ((TWein - TKein) - (TWaus - TKaus)) / (Log((TWein - TKein) / (TWaus - TKaus)))
    8. 'fun = k * A * deltaTlog - (MK * Cpk * (TKaus - TKein)) * 3.6
    9. End If
    10. fun = k * A * deltaTlog - (MK * Cpk * (TKaus - TKein)) * 0.2778
    11. End Function


    Problem wie oben schon beschrieben, dass er wenn ich das Programm ausführ in der function keine Werte hat für zb MK oder Cpk obwohl sie im Programm aufgerufen werden und Werte reingeschrieben werden.

    Über Hilfe würde ich mich sehr freuen.Vielen Dank
    … in der function keine Werte hat für zb MK oder Cpk …


    Werte in Subs oder Funktionen sind Local.

    Entweder globale Variablen deklarieren, oder die Variablen an die Function übergeben.

    Quellcode

    1. Function fun(TKaus as Double, MK as Double, …) as Double


    Als was sind MK usw. deDIMmt?

    »Option Explicit« am Anfang?
    Hey Eierlein,

    da sieht man den Wald vor lauter Bäumen nicht. Hatte tatsächlich am Anfang vergessen meine Variablen als Public zu definieren daher konnte die Function die Werte nicht übergeben. In meinem Excelprogramm hatte ich das gemacht - aber in meinem Formular einfach vergessen.

    Danke für die Antwort ich war schon total am verzweifeln :D :thumbsup: