Hello everyone!!

I have an assignment to create that wonderful mortgage calculator. I have the code working, but when i try to catch an error (No matter is it is left blank, or a letter is typed in) the program crashes. Not sure what i am doing wrong, but any in site would be great. Thanks everyone!!

``````Public Class MortCalc

Private Sub clearForm()
txtLoan.Text = 200000
txtInterest.Text = 5.75
txtYears.Text = 30
txtTotal.Text = ""
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click
'New Varables
Dim txtPrincipal As Double
Dim txtRate As Double
Dim txtYears As Integer
Dim amount As Double
Dim monthlyRate As Double
Dim years As Integer

amount = CDbl(Me.txtLoan.Text)
monthlyRate = CDbl(Me.txtInterest.Text) / 100 'allows interest rate to be entered whole number'
years = CInt(Me.txtYears.Text)

If IsNumeric(txtLoan.Text) = False Then
MsgBox("Please enter a valid loan amount.")
txtLoan.Clear()
txtLoan.Focus()
Exit Sub
End If

If IsNumeric(txtInterest.Text) = False Then
MsgBox("Please enter a valid Interest Rate")
txtInterest.Clear()
txtInterest.Focus()
Exit Sub
End If

If IsNumeric(Me.txtYears.Text) = False Then
Me.txtYears.Clear()
Me.txtYears.Focus()
End If

txtPrincipal = FormatCurrency(amount)
txtRate = FormatCurrency(monthlyRate)
txtYears = FormatCurrency(years) * 12

Dim iRate As Double = monthlyRate / 12
Dim tTotal As Double = txtPrincipal * (iRate / (1 - (1 + iRate) ^ (-txtYears)))
Me.txtTotal.Text = Format(tTotal, "\$#,##0.00")
End Sub

Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
clearForm()
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
End
End Sub
End Class``````
2
Contributors
1
2
Views
8 Years
Discussion Span
Last Post by ndeniche

This is because even though you are validating the textboxes' input, you are not stopping the program's progress... what you what to do is separate the `FormatCurrency()` functions into a separate function, validated by the `IsNumer()` results. Something like this:

``````Public Class MortCalc

Private Sub clearForm()
txtLoan.Text = 200000
txtInterest.Text = 5.75
txtYears.Text = 30
txtTotal.Text = ""
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click
'New Varables
Dim txtPrincipal As Double
Dim txtRate As Double
Dim txtYears As Integer
Dim amount As Double
Dim monthlyRate As Double
Dim years As Integer

amount = CDbl(Me.txtLoan.Text)
monthlyRate = CDbl(Me.txtInterest.Text) / 100 'allows interest rate to be entered whole number'
years = CInt(Me.txtYears.Text)

If Not IsNumeric(txtLoan.Text) Then
MsgBox("Please enter a valid loan amount.")
txtLoan.Clear()
txtLoan.Focus()
Exit Sub
End If

If Not IsNumeric(txtInterest.Text) Then
MsgBox("Please enter a valid Interest Rate")
txtInterest.Clear()
txtInterest.Focus()
Exit Sub
End If

If Not IsNumeric(Me.txtYears.Text) Then
Me.txtYears.Clear()
Me.txtYears.Focus()
End If

If IsNumeric(txtLoan.Text) And IsNumeric(txtInterest.Text) And IsNumeric(txtYears.Text) Then
txtPrincipal = FormatCurrency(amount)
txtRate = FormatCurrency(monthlyRate)
txtYears = FormatCurrency(years) * 12
Dim iRate As Double = monthlyRate / 12
Dim tTotal As Double = txtPrincipal * (iRate / (1 - (1 + iRate) ^ (-txtYears)))
Me.txtTotal.Text = Format(tTotal, "\$#,##0.00")
End If
End Sub

Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
clearForm()
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
End
End Sub
End Class``````

Edited by ndeniche: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.