Avatar billede blueice Nybegynder
08. marts 2009 - 15:50 Der er 1 kommentar

VBA - Trapez reglen - Runtime error 13

Hej Experter..

Jeg får Runtime error 13 i nederstående kode. Er der nogen der kan fortælle mig hvad jeg gør galt?

(bruger office 2007 hvis har nogen betydning...)

Function numInt() As String
'Brug af trapezreglen

'*** Temp start ***
Dim express As String
Dim var As String
Dim p0 As Double
Dim p1 As Double
express = "2*x+1"
var = "x"
p0 = 0
p1 = 25.01
'*** TEMP slut ***

'*** Dim start ***
Dim opdel As Double
Dim ft1 As Double
Dim ft2 As Double
Dim t1 As Double
Dim t2 As Double
Dim A As Double
Dim Atmp As Double
Dim p_space As Double
Dim i As Integer
'*** Dim slut ***

'*** præcision
opdel = 1000

'*** beregn afstand mellem opdellinger (del integraler)
p_space = (p1 - p0) / opdel

For i = 0 To opdel - 1
    'beregn t1 og t2
    t1 = p0 + p_space * i
    t2 = p0 + p_space * (i + 1)
   

    ft1 = Evaluate(Replace(express, var, t1))
   
    ft2 = Evaluate(Replace(express, var, t2))
    ' ^^ RUN TIME ERROR 13 ^^
 
    '*** find del areal
    Atmp = (t2 - t1) * (ft2 - ft1) / 2
   
    '*** sum over delarealet
    A = A + Atmp
   
    Next i
MsgBox A
End Function
Avatar billede tjacob Juniormester
09. marts 2009 - 11:33 #1
Du får fejlen fordi variablen express ikke indeholder "x" anden gang du forsøger at køre Evaluate.

På dette tidspunkt HAR du jo replacet "x" med t1.

Desuden kommer problemet igen i næste iteration, medmindre du hele tiden opdater express. Det er da meget nemmere at lave udregningen direkte i loopet:

ft1=2*t1+1
ft2=2*t2+1


Og så helt droppe var og express variablerne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester