Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 2.978 pregleda

Najnovija ↓

Pomoc sa brojem decimala u VBA 15.06.2009. u 17:56 · pre 211 meseci
izmenjeno 2 puta, poslednji put Aleksandar Vasic 15.06.2009. u 19:06
  1. Aleksandar Vasic15.06.2009. u 19:06zapis iz teksta poruke
  2. Aleksandar Vasic15.06.2009. u 19:06zapis iz teksta poruke
#1
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
Re: Pomoc sa brojem decimala u VBA 15.06.2009. u 19:58 · pre 211 meseci #2
Koristi Format funkciju
Code:
Dim broj As Double
broj = 14.76253442
Msgbox Format(broj, "0.00")
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Pomoc sa brojem decimala u VBA 15.06.2009. u 20:21 · pre 211 meseci #3
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.

Re: Pomoc sa brojem decimala u VBA 15.06.2009. u 20:39 · pre 211 meseci #4
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š.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Pomoc sa brojem decimala u VBA 15.06.2009. u 20:54 · pre 211 meseci #5
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
Re: Pomoc sa brojem decimala u VBA 15.06.2009. u 21:17 · pre 211 meseci #6
ne vidim nikakav problem u tome
Code:
If war <= 0 then nw = 0

ili ja nešto nisam dobro razumeo ? :)
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Pomoc sa brojem decimala u VBA 20.07.2009. u 22:07 · pre 210 meseci
izmenjeno 1 put, poslednji put miki987 21.07.2009. u 16:04
  1. miki98721.07.2009. u 16:04zapis iz teksta poruke
#9
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme