J'ai le problème suivant. Je crée une feuille de calcul Excel avec des éléments x actifs pour calculer plusieurs valeurs (pour une classe à l'université). Et dans le code suivant, j'ai parfois (pas à chaque fois) l'erreur d'exécution 9 que l'index est hors de portée (j'espère que je l'ai traduit correctement en anglais). Je suis nouveau à vba. Je sais qu'il y a plusieurs problèmes similaires déjà posés mais j'ai un gros problème pour adapter les solutions à mon code car je ne comprends pas vraiment le problème dans mon code comme les solutions de leurs problèmes.Erreur d'exécution VBA 9 (Excel 2007)
J'ai marqué la ligne pour laquelle l'erreur se produit avec des étoiles.
Je serais vraiment reconnaissant si quelqu'un pouvait expliquer, pourquoi ce problème se produit parfois dans mon code et comment le résoudre correctement. Merci d'avance.
Voici le code:
Sub calcinull()
Dim ione(4), itwo(4), ii, ints(4), cs(4), io, it As Double
Dim a, b, c As Double
ione(0) = 0
ione(1) = 10
ione(2) = 20
ione(3) = 30
ione(4) = 40
itwo(0) = 100
itwo(1) = 90
itwo(2) = 80
itwo(3) = 70
itwo(4) = 60
For b = 0 To 4
ii = ione(b) + (((itwo(b) - ione(b)) * (NPV(ione(b)))/(NPV(ione(b)) - NPV(itwo(b)))))
ints(b) = ii
cs(b) = NPV(ii)
Next b
Dim AbsInt(4), AbsCs(4) As Double
For a = 0 To 4
AbsInt(a) = VBA.Abs(ints(a))
AbsCs(a) = VBA.Abs(cs(a))
Next a
Dim pos As Integer
pos = Application.Match(Application.Min(AbsCs), AbsCs, 0)
*ii = ints(pos)*
If NPV(ii) > 0 Then
io = ii
If pos > 0 Then
it = itwo(pos - 1)
Else
it = itwo(0)
End If
ElseIf NPV(ii) < 0 Then
it = ii
If pos > 0 Then
io = ione(pos - 1)
Else
io = ione(0)
End If
ElseIf NPV(ii) = 0 Then
inull = ii
End If
For c = 1 To 30
Do Until (NPV(io) - NPV(it)) <> 0
io = io - 0.1
it = it + 0.1
Loop
ii = io + (((it - io) * (NPV(io))/(NPV(io) - NPV(it))))
If NPV(ii) > 0 Then
io = ii
If it > (io + 0.5) Then
it = it - 0.5
End If
ElseIf NPV(ii) < 0 Then
it = ii
If io < (it - 0.5) Then
io = io + 0.5
End If
ElseIf NPV(ii) = 0 Then
inull = ii
Exit For
End If
Next c
inull = ii
End Sub
Est-ce que «NPV» n'a pas besoin de 2 paramètres? 'Rate' et' ValueArray() '? –
NPV est un FDU qui nécessite le taux comme variable que la variable est utilisée pour actualiser les flux de trésorerie donnés. Je ne suis pas très bon et habitué à vba comme je pourrais le dire, mais je ne vois pas vraiment comment un ValueArray pourrait être utilisé en NPV. Pouvez-vous m'expliquer votre idée, s'il vous plaît? Merci beaucoup d'avance. –