Laufzeitfehler 5 - ungültiger Prozeduraufruf
31.07.2016 23:49:59
Torben
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 :)).