I forgot that it was an overflow error from the values being too large. I would put a check at each step and force reasonable entries for each input box.

[vba]
Private Sub Calculate_Monthly_Repayments_Click()
Dim y As Variant
Dim r As Variant
Dim n As Variant
Dim ratio As Double
Dim calc1 As Double
Dim calc2 As Double
Dim calc3 As Currency
Do
y = Application.InputBox("Please enter the loan that is to be paid off", "Loan amount")
If TypeName(y) = "Boolean" Then
Exit Sub
ElseIf y <= 0 Then
MsgBox "Please enter a positive value."
ElseIf y > 10 ^ 10 Then
MsgBox "Sorry, your loan amount is too high"

Else
Exit Do
End If
Loop
Do
r = Application.InputBox("Now input the annual interest rate to be used")
If TypeName(r) = "Boolean" Then
Exit Sub
ElseIf r <= 0 Then
MsgBox "Please enter a positive value."
ElseIf r > 100 Then
MsgBox "Please enter a value less than 100."
ElseIf Not IsNumeric(r) Then
MsgBox "Please enter a numeric value."
Else
Exit Do
End If
Loop
Do
n = Application.InputBox("Finally, enter the number of years in which the loan needs to be paid off")
If TypeName(n) = "Boolean" Then
Exit Sub
ElseIf n <= 0 Then
MsgBox "Please enter a positive value."
ElseIf n > 60 Then
MsgBox "Do you really want to burden your grandchilren with this debt?"
ElseIf Not IsNumeric(n) Then
MsgBox "Please enter a numeric value."
Else
Exit Do
End If
Loop
ratio = (r / 100) + 1
calc1 = y * (ratio ^ n)
calc2 = ((ratio ^ n) - 1) / (ratio - 1)
calc3 = calc1 / (calc2 * 12)
MsgBox ("The monthly payment required to pay off the loan is £") & Round(calc3, 2)

End Sub[/vba]