I am pmmd861, I am new here. Nice to meet you all!
Could anyone help me with this VBA Excel code, please?
So, i ve got the excel spreadsheet from someone else, and i need to nuderstand the code there so that i could slightly rebuild it in the future. I understand everything in the code, but there is some piece of code that i ve never seen and i have no idea how it works!
Here is the extract from the program.
In the Calibrate sub i have the code
ActiveCell.FormulaR1C1 = "1"
This bit is simple.
[code]ActiveCell.FormulaR1C1 = "1"[/code]
is executed the code changes the value in the cell H9 AND after that CALLS the user defined FUNCTION in another module! My question is WHY? This is not how you call the function, right? Does it have something to do with windows programming language (i think it called API functions)?
Also, it repeats the function many times, as if it is driven by some external loop (but there is no any cpde the loop).
I tried to delete ALL the code in ALL modules and just to leave this bit - it still call the function in the same way.
Also, there ii the same code for another sheet, but on that sheet when one cell is changes it calls the functuion and when another cell is changed it does NOT call this function? PLease, give me a hint where to look for the answer! I searched for Application. properties in the code and in the ThisWorkbook module and didnt find anything! Also, there no any classes in this project.
Does this behaviour resemble something that you know?
The function that is called is:
[code]Function fnRiskWeightedAssetsCardsOvers(EAD As Double, LGD As Double, PD As Double) As Double
On Error GoTo Err_fnRiskWeightedAssetsCardsOvers
Dim K As Double
K = fnCapitalReqCardsOver_K(LGD, PD)
fnRiskWeightedAssetsCardsOvers = K * 12.5 * EAD
fnRiskWeightedAssetsCardsOvers = 0
Function fnRiskWeightedAssetsLoans(EAD As Double, LGD As Double, PD As Double) As Double
On Error GoTo Err_fnRiskWeightedAssets
Dim K As Double
K = fnCapitalReqLoans_K(LGD, PD)
fnRiskWeightedAssetsLoans = K * 5 * EAD
fnRiskWeightedAssetsLoans = 0
Function fnCapitalReqCardsOver_K(LGD As Double, PD As Double) As Double
fnCapitalReqCardsOver_K = LGD * Sqr(0.25) - PD * LGD
Function fnCapitalReqLoans_K(LGD As Double, PD As Double) As Double
fnCapitalReqLoans_K = LGD * .NormSDist(1 / Sqr(1 - Corr(PD)) - PD * LGD
Function fnPDLoans(PD As Double) As Double
fnPDLoans = .NormSDist(1 / Sqr(1 - Corr(PD)) * .NormSInv(PD) + Sqr(Corr(PD)) / Sqr(1 - Corr(PD)) * .NormSInv(0.999)) - PD
Function Corr(PD As Double) As Double
Corr = (1 - Exp(-35 * PD)) / (1 - Exp(-35))
Thankx for your help guys!