Thread: WEND in VBA
View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.misc
Dana DeLouis Dana DeLouis is offline
external usenet poster
 
Posts: 947
Default WEND in VBA

While Abs(kw - Price) 0.00005

It appears to me that kw could be a typo.
Looking at the code, my guess is that it should be

While Abs(k2 - Price) 0.00005

It appears to loop until k2 (Pv) calculation is reduced to a value close to
Price.

Since "2" is next to "w" on the keyboard, my guess is that it should be k2,
and not kw.

--
HTH :)
Dana DeLouis
Windows XP & Office 2007


"Dave F" wrote in message
...
Interesting point. The VBA I pasted here is from a larger UDF that
calculates the yield on a bond.

Here's the entire function. Perhaps this would explain the purpose of the
loop:

Function B_Yield_ISMA(Sett_d As Date, Mat_D As Date, Cpn As Double, Price
As
Double) As Double
'Calculates the yield of a coupon bearing bond (ISMA)
Dim L As Double, t As Double, sz As Double, T1 As Double, T2 As Double,
T3 As Double
Dim k1 As Double, k2 As Double
Dim n As Long
L = Application.Days360(Sett_d, Mat_D) / 360
n = Int(L)
t = L - n
sz = Cpn * (1 - t)
T1 = Application.Rate(L, Cpn, -Price, 100)
If IsError(T1) Then T2 = -1 Else k1 = (-Application.PV(T1, n, Cpn,
100) + Cpn) / (1 + T1) ^ t - sz
T2 = T1 + 0.00005
k2 = (-Application.PV(T2, n, Cpn, 100) + Cpn) / (1 + T2) ^ t -
sz
While Abs(kw - Price) 0.00005
T3 = T1 + (Price - k1) * (T2 - T1) / (k2 - k1)
T1 = T2
k1 = k2
T2 = T3
k2 = (-Application.PV(T2, n, Cpn, 100) + Cpn) / (1 + t) ^ t
- sz
Wend
B_Yield_ISMA = T2
End Function
--
A hint to posters: Specific, detailed questions are more likely to be
answered than questions that provide no detail about your problem.


"Dana DeLouis" wrote:

While Abs(kw - Price) 0.00005


As a side note, it is a little unusual here because both kw & Price do
not
get changed in the loop.
It appears it could cause an endless loop.
Usually, one or both get change in the loop so that eventually kw-Price
falls below .00005.

--
Dana DeLouis
Windows XP & Office 2007


"Dave F" wrote in message
...
Very helpful, thanks.

Dave
--
A hint to posters: Specific, detailed questions are more likely to be
answered than questions that provide no detail about your problem.


"Jim Thomlinson" wrote:

While...Wend is just one of the control flow structures. I personally
prefer
Do...Loop but there is nothing wrong with While...Wend. Check out this
link
on the different control flow structures...

http://msdn.microsoft.com/library/de...7ecff00da4.asp
--
HTH...

Jim Thomlinson


"Dave F" wrote:

What does WEND mean in VBA code, e.g.:

While Abs(kw - Price) 0.00005
T3 = T1 + (Price - k1) * (T2 - T1) / (k2 - k1)
T1 = T2
k1 = k2
T2 = T3
k2 = (-Application.PV(T2, n, Cpn, 100) + Cpn) / (1 +
t)
^ t
- sz
Wend

Does it merely mean While End, sort of like End If?

Dave
--
A hint to posters: Specific, detailed questions are more likely to
be
answered than questions that provide no detail about your problem.