How to use Pmt function in VBA?

The PMT function in VBA is used to calculate the payment for a loan based on constant payments and a constant interest rate. The syntax of the PMT function is:

PMT(rate, nper, pv, [fv], [type])
Where: rate is the interest rate for each period. nper is the total number of payments for the loan. pv is the present value, or the total amount that a series of future payments is worth now; also known as the principal. fv (optional) is the future value, or a cash balance you want to attain after the last payment is made. If omitted, it is assumed to be 0 (the future value of a loan, for example, is 0). type (optional) is the number 0 (payments due at the end of the period) or 1 (payments due at the beginning of the period). If omitted, it’s assumed to be 0. Here is an example of how to use the PMT function within VBA to calculate the monthly payment for a loan:

Sub CalculateLoanPayment()
    Dim MonthlyPayment As Double
    Dim LoanAmount As Double
    Dim InterestRate As Double
    Dim NumberOfPayments As Integer
    ' Example loan terms
    LoanAmount = 100000     ' Loan principal ($100,000)
    InterestRate = 0.05 / 12 ' Monthly interest rate (5% per year)
    NumberOfPayments = 30 * 12  ' Total number of payments (30 years)

    ' Calculate the monthly payment
    MonthlyPayment = PMT(InterestRate, NumberOfPayments, -LoanAmount)

    ' Output the monthly payment to the Immediate Window (Ctrl+G to view)
    Debug.Print "The monthly payment is: $" & Format(MonthlyPayment, "0.00")
End Sub
In this example: We’re trying to calculate the monthly payment for a $100,000 loan. The annual interest rate is 5%, so the monthly interest rate is 0.05 / 12. The loan term is 30 years, and payments are made monthly, so we multiply 30 by 12 to get the total number of payments. Notice that the pv argument is negative because it represents an outflow of cash (you’re borrowing money, so it’s negative from your perspective). After running this VBA subprocedure, the monthly payment should be printed to the Immediate Window in the VBA editor. You can use Debug.Print to output values for verification purposes, or you can modify the code to show the result in an Excel worksheet cell or a message box, depending on the needs of your application.

Unlock Your Potential


Basic - Advanced


Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project

Leave a Reply

Your email address will not be published. Required fields are marked *