Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 5 - ungültiger Prozeduraufruf

Laufzeitfehler 5 - ungültiger Prozeduraufruf
31.07.2016 23:49:59
Torben
Liebes Herber-Forum,
ich schreibe zurzeit meine Bachelorthesis im finanzmathematischen Bereich und schreibe - mit meinen geringen VBA Kenntnissen - Simulationsprogramme, die mir meine umfangreichen Rechnungen abnehmen.
Bis hierhin konnte ich auch sämtliche Probleme mit den bereits bestehenden Beiträgen lösen, doch bin nun auf einen für mich unerklärlichen Fehler gestoßen.
Hier der Code:
Sub Clayton() 'Deklaration Dim Z As Byte Dim j, i, k1, k2 As Byte Dim Par(1 To 30, 1 To 30), v1, v2 As Double Dim C As Double Dim u As Integer 'Einlesen 'Größe der Stichprobe Z = 198 'Parameter For j = 1 To 30 For i = j + 1 To 30 Par(i, j) = Workbooks("Parameterschätzung.xlsm").Sheets("Par Clayton").Cells(i + 1, j + _ 1) Next i Next j 'Schleife u = 3 For j = 1 To 30 For i = j + 1 To 30 For k1 = 1 To Z For k2 = 1 To Z v1 = (k1 / Z) ^ (-Par(i, j)) v2 = (k2 / Z) ^ (-Par(i, j)) C = Application.WorksheetFunction.Max((v1 + v2 - 1) ^ (-(1 / Par(i, j))), 0) Worksheets("Clayton").Cells((k1 - 1) * Z + k2 + 1, u) = C 'Ausgabe Next k2 Next k1 u = u + 1 Next i Next j End

Sub 'Clayton
Die Schleife berechnet also für sämtliche Kombinationen der Variablen i,j,k1 und k2 einen  _
konkreten Wert C und schreibt diesen Wert auf das Tabellenblatt "Clayton". Diese Rechnung beruht auf einem konkreten Parameter "Par(i,j)", den ich in einem separaten Programm berechnet habe.
Bei den folgenden Werten der Variablen erhalte ich aber "Laufzeitfehler 5: ungültiger  _
Prozeduraufruf oder ungültiges Argument":
j = 18
i = 22
k1 = 1
k2 = 1
Par(i,j) = -0,1795 (ungefähr)
Bis dahin läuft das Programm problemlos und die Ergebnisse sind (nach stichprobenartiger Überprü _
fung) auch korrekt.
An dieser Stelle sollte das Ergebnis ca. 2,51768 * 10^-4 betragen. Einen mathematischen Fehler  _
konnte ich hier in der Formel nicht finden und meine VBA-Kenntnisse sind leider in der Fehlersuche ausgezählt.
Ich freue mich über sämtliche Hinweise und Lösungsansätze.
Rückfragen beantworte ich natürlich gern und hoffe, dass die Beschreibung des Problems soweit  _
ausreichend ist (ohne in die mathematischen Details zu gehen :)).


		

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 5 - ungültiger Prozeduraufruf
01.08.2016 05:57:33
fcs
Hallo Torben,
als erstes solltes du die Deklaration der Variablen anpassen.
Die " As ...." anweisung muss hinter jeder Variablen stehen, wenn gewünscht. Ansonsten werden die Variablen als Variant angenommen.
'Deklaration
Dim Z As Byte
Dim j As Byte, i As Byte, k1 As Byte, k2 As Byte
Dim Par(1 To 30, 1 To 30) As Double, v1 As Double, v2 As Double
Dim C As Double
Dim u As Integer

Probleme gibt es, wenn (v1+v2-1) negative Werte liefert. Dann funktioniert die Potenz-Rechnung nicht immer.
Gruß
Franz
 AB
7v1 = (k1 / Z) ^ (-Par(i, j))0,387033537
8v2 = (k2 / Z) ^ (-Par(i, j))0,387033537
9C = Max((v1 + v2 - 1) ^ (-(1 / Par(i, j))), 0)#ZAHL!
10  
11Z198
12j = 1818
13i = 2222
14k1 = 11
15k2 = 11
16Par(i,j) = -0,1795-0,1795

Formeln der Tabelle
ZelleFormel
B7=(B14/B11)^(-B16)
B8=(B15/B11)^(-B16)
B9=MAX((B7 + B8 - 1) ^ (-(1 / B16)); 0)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Anzeige
AW: Laufzeitfehler 5 - ungültiger Prozeduraufruf
01.08.2016 11:22:26
Torben
Besten Dank, Franz!
Das bringt schon enorm weiter! Jetzt arbeite ich nur an einem Fix :)
LG
Torben

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige