Collapse column

Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Wazzap

Seiten: [1]
1
Excel / Antw: VBA compiling probleme
« am: April 03, 2015, 17:04:23 Nachmittag »
Ich weiß nich wie ich dir danken soll :))

2
Excel / Antw: VBA compiling probleme
« am: April 03, 2015, 12:05:17 Nachmittag »
Bei mir kreidet er direkt das erste noEvent in der If-Bedingung an und sagt mir " Compiling Error : Variable not defined"
Private 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

Ich habe deinen Beispielcode als Gerüst genommen und meine Variablen noch eingebaut. Aber irgendwo hab ich noch n Fehler gemacht..

Erstmal noch vielen Dank für deine Hilfe.

3
Excel / Antw: VBA compiling probleme
« am: April 03, 2015, 10:57:33 Vormittag »
Danke.  :)

Ich hab die Boolean Variable noEvent mit eingebaut, sieht soweit ganz gut aus. Jetzt meckert excel aber rum, das er die doch bitte noch definiert haben möchte.
Muss ich ihm noch sagen wann noEvent true und wann false ist?und vor allem wie.

Ich muss mich solangsam mal für mein ganzes Unwissen entschuldigen^^

4
Excel / Antw: VBA compiling probleme
« am: April 03, 2015, 09:35:05 Vormittag »
Vielen Dank,ich werde es gleich mal ausprobieren.
Zufällig noch ne Idee warum das Ergebniss zwar vom reinen Zahlenwert her stimmt, aber zB. statt 198.786 nur 198786 da steht und man kein Komma etc sieht?

Mfg Fabian

5
Excel / Antw: VBA compiling probleme
« am: April 01, 2015, 16:24:26 Nachmittag »
Hat niemand eine Idee? Bitte helft mir doch :)

6
Excel / Office 2010: Antw: VBA compiling probleme
« am: März 30, 2015, 22:31:40 Nachmittag »
Danke erstmal, der Compiling Error hat sich durch ersetzen von e(1) durch exp(1) erledigt.
Das Programm läuft soweit problemlos durch. Nur das ergebniss kommt mir ein wenig utopisch hoch vor und ist
merkwürdigerweise grau hinterlegt.

Momentan habe ich jedoch das Problem oder vielmehr den nervenden Nebeneffekt,das beim Check IsNumeric und leerem Textfeld trozdem zur Anzeige "Bitte numerische Zah angeben!" kommt. Das würde ich gern vermeiden.jemand ideen?

Ich pack die Datein mal in den Anhang.

Vielen Dank schonmal an alle die sich dait befassen
Mfg Fabian

7
Excel / VBA compiling probleme
« am: März 30, 2015, 16:33:18 Nachmittag »
Hallo Excel Experten.
Ich muss für mein Studium ein Integralrechner in VBA programmieren. Da ich kein Informatik studiere überfordert mich das ganze ein wenig und im Code tauchen mehr und mehr Fehler auf deren Ursachen meist nicht soeinfach ersichtlich sind (für einen Laien).

Ich bekomme die Fehlermeldung " Compiling error : Argument not optional"

Ich hänge den code mal an, es wäre sehr nett wenn jemand den Fehler entdeckt und/oder weitere.

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.
Und das hier unten ist der Code der Userform
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 vielmals
Mfg Fabian

Seiten: [1]