Option Explicit
Dim a As Double
Dim b As Double
Dim n As Integer
Dim ka As Double
Dim kb As Double
Dim d As Double
Sub Cleaning()
Cells.Clear
Cells(8, 250).Value = "i ="
Cells(8, 251).Value = "xi ="
Cells(8, 252).Value = "yi = f(xi) ="
End Sub
Sub Checkab()
a = Integral.TB_untere.Value
b = Integral.TB_obere.Value
'Kontrolle ob untere Grenze kleiner ist als obere Grenze
If a > b Then
MsgBox "Der Wert von a muss kleiner sein als der Wert von b!"
End If
If a = b Then
MsgBox "Der Wert von a muss kleiner sein als der Wert von b!"
End If
End Sub
Sub Vorberechnung()
a = Integral.TB_untere.Value
b = Integral.TB_obere.Value
n = Integral.TB_teilbereiche.Value
ka = Integral.TB_ka.Value
kb = Integral.TB_kb.Value
d = (b - a) / n
Dim i As Integer
Dim xi As Double
Dim yi As Double
For i = 0 To n
Cells(9 + i, 250).Value = i
xi = a + i * d
Cells(9 + i, 251).Value = xi
yi = f(xi, ka, kb)
Cells(9 + i, 252).Value = yi
Next i
End Sub
Sub accurateSolution()
a = Integral.TB_untere.Value
b = Integral.TB_obere.Value
ka = Integral.TB_ka.Value
kb = Integral.TB_kb.Value
Integral.TB_Exakt.Value = SF(b, ka, kb) - SF(a, ka, kb)
End Sub
Sub approximateSolution()
Dim sum As Double
sum = 0
Dim i As Integer
For i = 1 To n - 1
sum = sum + Cells(9 + i, 252).Value
Next i
Integral.TB_trapez.Value = d / 2 * (Cells(9, 252).Value + _
2 * sum + Cells(9 + n, 252))
End Sub
Function f(x As Double, ka As Double, kb As Double, e As Double) As Double
f = ka * x * e(1) ^ x - kb * x
End Function
Function SF(x As Double, ka As Double, kb As Double, e As Double) As Double
SF = ka * (x - 1) * e() ^ x - (x ^ 2 * kb) / 2
End Function
Das ist der Code des Modules.Option Explicit
Dim a As Double
Dim b As Double
Dim n As Integer
Dim ka As Double
Dim kb As Double
'Es werden alle Variablen global deklariert.
Private Sub BT_Clear_Click()
'Zurücksetzen aller Textboxen, so dass sie leer sind.
TB_untere.Locked = False
TB_obere.Locked = False
TB_teilbereiche.Locked = False
TB_ka.Locked = False
TB_kb.Locked = False
TB_ka.Value = ""
TB_kb.Value = ""
TB_untere.Value = ""
TB_obere.Value = ""
TB_teilbereiche.Value = ""
TB_trapez.Value = ""
TB_Exakt.Value = ""
End Sub
Private Sub BT_ende_Click()
Unload Me
'Button beendet Programm
End Sub
Private Sub TB_untere_Change()
If IsNumeric(TB_untere.Value) Then
a = TB_untere.Value
If a = 0 Then
MsgBox "Der Wert der unteren Grenze darf nicht Null sein!"
TB_untere.Value = ""
End If
If a < 0 Then
MsgBox "Der Wert der unteren Grenze muss größer als Null sein!"
End If
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
TB_untere.Value = ""
End If
'Wenn eine Zahl eingegeben wird, wird sie auf der Variablen a gespeichert,
'ist sie kleiner oder gleich Null erscheint eine Messagebox, dies geschieht auch
'wenn es sich um eine nicht numerische Eingabe handelt!
End Sub
Private Sub TB_obere_Change()
If IsNumeric(TB_obere.Value) Then
b = TB_obere.Value
If b > 65534 Then
MsgBox "Der Wert der oberen Grenze ist zu hoch. Bitte wählen sie einen Wert kleiner als 65534!"
TB_obere.Value = ""
End If
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
TB_obere.Value = ""
End If
'Wenn eine Zahl eingegeben wird, wird sie auf der Variablen b gespeichert,
'ist sie zu groß erscheint eine Messagebox, dies geschieht auch
'wenn es sich um eine nicht numerische Eingabe handelt!
End Sub
Private Sub TB_teilbereiche_Change()
If IsNumeric(TB_teilbereiche.Value) Then
n = TB_teilbereiche.Value
If n = 0 Then
MsgBox "n muss eine natürliche Zahle sein!"
TB_teilbereiche.Value = ""
If Not CInt(n) = Abs(n) Then
MsgBox " n muss eine natürliche Zahl sein!"
TB_teilbereiche.Value = ""
End If
End If
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
TB_teilbereiche.Value = ""
End If
'Es erscheinen Messageboxen wenn n=0 oder wenn n die Bedingungen einer natürlichen Zahl nicht erfüllt!
'Sind ale Bedingungen erfüllt wird der Wert auf der Variablen n gespeichert.
End Sub
Private Sub TB_ka_Change()
If IsNumeric(TB_ka.Value) Then
ka = TB_ka.Value
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
TB_ka.Value = ""
End If
End Sub
Private Sub TB_kb_Change()
If IsNumeric(TB_kb.Value) Then
kb = TB_kb.Value
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
TB_kb.Value = ""
End If
End Sub
Private Sub BT_ergebniss_Click()
TB_untere.Locked = True
TB_obere.Locked = True
TB_teilbereiche.Locked = True
TB_ka.Locked = True
TB_kb.Locked = True
Vorberechnung
accurateSolution
approximateSolution
TB_Exakt.Value = CDbl(TB_Exakt.Value)
TB_trapez.Value = CDbl(TB_trapez.Value)
End Sub
Ich danke euch schon jetzt vielmalsPrivate Sub TB_ka_Change()
If Not noEvents Then
If IsNumeric(TB_ka.Value) Then ka = TB_ka.Value
:
:
Else
MsgBox "Es ist eine numerische Eingabe erforderlich!"
noEvents = True
TB_ka.Value = ""
noEvents = False
End If
End If
End Sub