title: Excel VBA compile error: Expected Sub, Function or Property
body: <p>I am getting a compile error in Excel VBA which says Expected Sub, Function or Property. The function I am using is given below which is trying to copy the rate function in Excel.
  Thanks for your help.</p>
  
  <pre><code>Function rate_m(nper As Double, pmt As Double, pv As Double, fv As Double, types As Double, guess As Double) As Variant
      Dim y, y0, y1, x0, x1, f, i As Double
      Dim FINANCIAL_MAX_ITERATIONS As Double
      Dim FINANCIAL_PRECISION As Double
  
      If IsNull(guess) Then guess = 0.01
      If IsNull(fv) Then fv = 0   
      If IsNull(types) Then types = 0
  
      FINANCIAL_MAX_ITERATIONS = 128 'Bet accuracy with 128
      FINANCIAL_PRECISION = 0.0000001 '1.0e-8
  
      y , y0, y1, x0, x1, f, i = 0
      rate_m = guess
  
      If Abs(rate_m) &lt; FINANCIAL_PRECISION Then
          y = pv * (1 + nper * rate_m) + pmt * (1 + rate_m * types) * nper + fv
      Else
          f = Exp(nper * Log(1 + rate_m))
          y = pv * f + pmt * (1 / rate_m + types) * (f - 1) + fv
  
          y0 = pv + pmt * nper + fv
          y1 = pv * f + pmt * (1 / rate_m + types) * (f - 1) + fv
      End If
  
      'find root by Newton secant method
      i , x0 = 0
      x1 = rate_m
  
      While Abs(y0 - y1) &gt; FINANCIAL_PRECISION &amp; i &lt; FINANCIAL_MAX_ITERATIONS
          rate_m = (y1 * x0 - y0 * x1) / (y1 - y0)
          x0 = x1
          x1 = rate_m
  
          If Abs(rate_m) &lt; FINANCIAL_PRECISION Then
              y = pv * (1 + nper * rate_m) + pmt * (1 + rate_m * types) * nper + fv
          Else
              f = Exp(nper * Log(1 + rate_m))
              y = pv * f + pmt * (1 / rate_m + types) * (f - 1) + fv
          End If
  
          y0 = y1
          y1 = y
          i = i + 1
      Wend
  End Function
  </code></pre>