简体   繁体   中英

VBA - Excel - Error 13

I am new to VBA, I am getting this Error 13 - types mismtached but I have no idea why and I found nothing helpful... any hint ? (Sorry it's in french)

Function EIDPA(Coût_actif, Tx_dépréciation, Tx_marginal, Coût_opportunité)
    EIDPA = ((Coût_actif * Tx_dépréciation * Tx_marginal) / (Coût_opportunité + Tx_dépréciation)) * ((1 + (0.5 * Coût_opportunité)) / (1 + Coût_opportunité))
End Function

Sub EIDPA2()
    Coût_actif = InputBox("Entrez le coût de l'actif SVP", "Calculateur", "100000")
    Tx_dépréciation = InputBox("Entrez le taux de dépréciation pour ammortissement SVP", "Calculateur", "0.30")
    Tx_marginal = InputBox("Entrez le taux marginal d'imposition SVP", "Calculateur", "0.50")
    Coût_opportunité = InputBox("Entrez le coût d'opportunité applicable SVP", "Calculateur", "0.05")
    MsgBox "La valeur actuelle des économies d'impôts est de: " _
    & Module1.EIDPA(Coût_actif, Tx_dépréciation, Tx_marginal, Coût_opportunité) & "$", vbInformation, "Calculateur"
End Sub

You should be properly Dim ming your variables; otherwise you're attempting to use string variables as numerics:

Function EIDPA(Coût_actif As Double, Tx_dépréciation As Double, Tx_marginal As Double, Coût_opportunité As Double) As Double
    EIDPA = ((Coût_actif * Tx_dépréciation * Tx_marginal) / (Coût_opportunité + Tx_dépréciation)) * ((1 + (0.5 * Coût_opportunité)) / (1 + Coût_opportunité))
End Function
Sub EIDPA2()
    Dim Coût_actif  As Double
    Dim Tx_dépréciation As Double
    Dim Tx_marginal  As Double
    Dim Coût_opportunité As Double

    Coût_actif = CDbl(InputBox("Entrez le coût de l'actif SVP", "Calculateur", "100000"))
    Tx_dépréciation = CDbl(InputBox("Entrez le taux de dépréciation pour ammortissement SVP", "Calculateur", "0.30"))
    Tx_marginal = CDbl(InputBox("Entrez le taux marginal d'imposition SVP", "Calculateur", "0.50"))
    Coût_opportunité = CDbl(InputBox("Entrez le coût d'opportunité applicable SVP", "Calculateur", "0.05"))
    MsgBox "La valeur actuelle des économies d'impôts est de: " _
    & Module1.EIDPA(Coût_actif, Tx_dépréciation, Tx_marginal, Coût_opportunité) & "$", vbInformation, "Calculateur"
End Sub

You're getting an error because InputBox returns strings, and you're trying to multiply strings together here:

EIDPA = ((Coût_actif * Tx_dépréciation * Tx_marginal) / (Coût_opportunité + Tx_dépréciation)) * ((1 + (0.5 * Coût_opportunité)) / (1 + Coût_opportunité)) .

Try declaring your French variables as integers/floating point to see if that helps. More info

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM