![]() |
| If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|||||||
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
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. |
| Ads |
|
#2
|
|||
|
|||
|
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. |
|
#3
|
|||
|
|||
|
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. |
|
#4
|
|||
|
|||
|
> 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. |
|
#5
|
|||
|
|||
|
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. > > > |
|
#6
|
|||
|
|||
|
> 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. >> >> >> |
|
#7
|
|||
|
|||
|
You may be right. I got the code in an email from a colleague and have not
had a chance to test it. Dave -- 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 > > 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. > >> > >> > >> > > > |
|
#8
|
|||
|
|||
|
"Dana DeLouis" > wrote in message
... >> 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. I seems that when Gord Dibben said to me that other day: > That's why there is a great herd of us monitoring these groups. he wasn't kidding! These NG's never cease to amaze me! -- Sandy In Perth, the ancient capital of Scotland and the crowning place of kings with @tiscali.co.uk |
|
#9
|
|||
|
|||
|
Hello,
Of course kw was a typo. The original source of the function: http://www.vbnum.com/download.asp?co...Bo nd%20(ISMA) He that will not use OPTION EXPLICIT must feel... Regards, Bernd |
| Thread Tools | |
| Display Modes | |
|
|