[ Elite SAS @ 15.06.2009. 16:56 ] @
POzdrav svima,

Ja se bavim ekonomijom i potpuni sam pocetnik u programiranju. Medjutim treba da uradim neki projekat u VBA. U produzetku vam saljem koji sam napisao i koji radi u excelu.Medjutim trebalo bi da mi variabla war ima najvise dve decimale.POkusao sam to da uradim sa Math.round ali nije islo. Interesuje me da li neko zna sta i gde tacno (u kodu) da napisem da bi dobio war variablu samo sa dve decimale. Jako bi mi znacila pomoc. Veliki pozdrav i hvala unapred

Code:
Sub Button1_Click()
    Dim S As Double: S = Cells(5, 3).Value
    Dim r As Double: r = Cells(6, 3).Value
    Dim T As Double: T = Cells(7, 3).Value
    Dim sig As Double: sig = Cells(8, 3).Value
    
    Dim cap As Double: cap = Cells(9, 3).Value
    Dim ns As Double: ns = Cells(10, 3).Value
    Dim i As Long
    

If S <= 0 Or T < 0 Or sig <= 0 Then GoTo error_label

For i = 5 To 25
    
    Dim X As Double: X = Cells(i, 10).Value
    
    If X <= 0 Then GoTo error_label
    
    Dim PvX As Double:      PvX = X * Exp(-r * T)
    Dim sig_rt As Double:   sig_rt = sig * Sqr(T)
    Dim d1 As Double:       d1 = Log(S / PvX) / sig_rt + 0.5 * sig_rt
    Dim BS As Double
    
    Dim war As Double 'value of warrants
    Dim nw As Double 'number of warrants
    
        BS = S * Application.NormSDist(d1) - PvX * Application.NormSDist(d1 - sig_rt)
        
        war = BS - (cap / ns)
            
        nw = cap / war
        
        If BS <= 0 Then BS = 0
        
        If war <= 0 Then war = 0
        
        If nw <= 0 Then nw = 0
        
        
        Cells(i, 12).Value = war
        
        Cells(i, 17).Value = war
        
        Cells(i, 11).Value = nw
        
        Cells(i, 14).Value = BS
        
        
    Next i
 
 Exit Sub
    
error_label:

    Beep    'To annoy the user
    MsgBox prompt:="Error encountered: Certain values cannot be a negative " & Err & "  " & Error(), _
            Buttons:=vbCritical, _
            Title:="Problem"
    
End Sub


[Ovu poruku je menjao Aleksandar Vasic dana 15.06.2009. u 19:06 GMT+1]

[Ovu poruku je menjao Aleksandar Vasic dana 15.06.2009. u 19:06 GMT+1]
[ Marko_L @ 15.06.2009. 18:58 ] @
Koristi Format funkciju
Code:
Dim broj As Double
broj = 14.76253442
Msgbox Format(broj, "0.00")
[ Elite SAS @ 15.06.2009. 19:21 ] @
Hvala Marko.
Ali problem je u tome sto bi ja hteo da mi se vrednost ove war variable ne ispisuje u message box-u vec u celijama (excel-a). Znaci kad izracuna war variablu da je onda zapamti kao vrednost sa dve decimale.

[ Marko_L @ 15.06.2009. 19:39 ] @
Ma to je samo primer... ali princip je isti... recimo
Code:
Cells(i, 12).Value = format(war, "0.00")

ili možeš da formatiraš samu varijablu
Code:
war = Format(war, "0.00")

a možeš da formatiraš i samu ćeliju u excelu
Code:
Cells(i, 12).NumberFormat = "0.00"

i onda će svaka vrednost koju upišeš u tu ćeliju poprimiti taj format... sve zavisi šta tačno hoćeš da postigneš.
[ Elite SAS @ 15.06.2009. 19:54 ] @
Hvala ti Marko definitivno radi ali se sad javio novi problem...loop


war = BS - (cap / ns)

war = Format(war, "0.00")

If war <= 0 Then war = 0

nw = cap / war



U ovod delu koda bih hteo da kazem da ukoliko je war<= 0 onda je i nw=0.


Hvala veliko
[ Marko_L @ 15.06.2009. 20:17 ] @
ne vidim nikakav problem u tome
Code:
If war <= 0 then nw = 0

ili ja nešto nisam dobro razumeo ? :)
[ Elite SAS @ 16.06.2009. 00:19 ] @
Hvala Marko resio sam!!!
[ generalelektronik @ 18.06.2009. 19:29 ] @
stoji war = BS - (cap / ns)


treba war = cdbl(format(BS - (cap / ns),"0.00"))
[ miki987 @ 20.07.2009. 21:07 ] @
Pozdrav

Imam

Code:

Vreme_norma = (I3.Text * 14.5 / 60) / 60


a zelim ga prikazati u Label pod imenom Vreme_norma i da se rezultat definise kao vreme, dakle u formatu

npr.
Code:
1:40:02 



I3.Text da bude ovo "1" (sat)
14.5 da bude ovo 40 (min)
60 da bude ovo 02 (sec)

Pitanje , kako i da li uopste moze sa Format odnosno ovim kodom koji se pojavljuje u temi ili nekim drugim

[Ovu poruku je menjao miki987 dana 21.07.2009. u 16:04 GMT+1]