• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Val(Replace(TextBox1.Text, ",", ".")

  • Konbuyu başlatan Konbuyu başlatan prtkl
  • Başlangıç tarihi Başlangıç tarihi
Katılım
19 Şubat 2010
Mesajlar
62
Excel Vers. ve Dili
2003-TR
Merhabalar,

Ekte bir uygulama gönderdim. Uygulama 2 sayının çarpımını alıyor. Örneğin;

2*5 = 10
2,3*3,2 = 7,36
1,45*2,13 = 3,0885

yapmak istediğim:

çarpan lar her ne olursa olsun sonucun virgülden sonra 2 basamak olmasını sağlamak. örneğin;

2*5 = 10,00
2,3*3,2 = 7,36
1,45*2,13 = 3,09 (yuvarlanmış değer)

Bunu nasıl yapabilirim?

Kolay Gelsin...
 

Ekli dosyalar

Son düzenleme:
Merhaba

Aşağıdaki kodu inceleyiniz...

Kod:
TextBox3.Value = Format(Round(TextBox1.Value * TextBox2.Value, 2), "#,##0.00")
 
çok teşekkürler, çok faydalı oldu ...

Kod:
Private Sub CommandButton1_Click()
a = Val(Replace(TextBox1.Text, ",", "."))
b = Val(Replace(TextBox2.Text, ",", "."))
TextBox3.Value = Format(Round(a * b, 2), "#,##0.00")
End Sub


son hali yukarıdaki gibi oldu. sayenizde çarpımın sonucu artık virgülden sonra 2 haneli. :)

Peki a ve b değerlerine tam sayı bile girsem girilen bu 2 çarpanın da virgülden sonra 2 haneli olmasını nasıl sağlarım.

Örneğin:

a= 2 ve b= 3 girdiğimde Textboxta ,
a= 2,00 ve b=2,00 gibi görünmesini sağlamak


biliyorum bu uyglama için bu çok mantıksız geliyor ama üzerinde çalıştığım proje için çok gerekli olacak bu son istediğimde.

umarım sıkmıyorumdur.

kolaygelsin.
 

Ekli dosyalar

Her zaman bunu kullanınız:cool:
Kod:
Textbox3.text=format(cdbl(textbox1.text)*cdbl(textbox2.text),"#,##0.00")
 
:)
dediğiniz gibi düzenledim.

ancak;

1)a ve b değerlerinde yanlışlıkla virgül yerine nokta kullanılırsa sonuç hatalı oluyor. (ilk çözümde bu sorunu aşmıştım)
2)a ve b değerleri de virgülden sonra 2 haneli olmuyor

şu şekilde yaptım:

Kod:
Private Sub CommandButton1_Click()
TextBox1.Text = Format(CDbl(TextBox1.Text), "#,##0.00")
TextBox2.Text = Format(CDbl(TextBox2.Text), "#,##0.00")
TextBox3.Text = Format(CDbl(TextBox1.Text) * CDbl(TextBox2.Text), "#,##0.00")
End Sub

sorunlar:
1) a ve b değerlerine yanlışlıkla virgül girilirse sonuç hatalı oluyor. :frown:
 
Vb'de kodlama mantığı aşağıdaki gibidir.
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub CommandButton1_Click()
If Not IsNumeric(TextBox1.Text) Then
    MsgBox "Lütfen ilk kutuya sayısal bir değer giriniz."
    TextBox1.SetFocus
    Exit Sub
End If
If Not IsNumeric(TextBox2.Text) Then
    MsgBox "Lütfen ikinci kutuya sayısal bir değer giriniz."
    TextBox2.SetFocus
    Exit Sub
End If
TextBox3.Text = Format(CDbl(TextBox1.Text) * CDbl(TextBox2.Text), "#,##0.00")
End Sub

Private Sub TextBox1_AfterUpdate()
TextBox1.Text = Format(TextBox1.Text, "#,##0.00")
End Sub

Private Sub TextBox1_Change()


End Sub

Private Sub TextBox2_AfterUpdate()
TextBox2.Text = Format(TextBox2.Text, "#,##0.00")
End Sub
 

Ekli dosyalar

teşekkür ederim evren bey. sayenizde cok sey öğrendim :)

UserFormu kullanacak olan kişi o kadar çok virgüllü sayı girmek zorundaki. :)

Formu gezmiş ve ondalık sayılarda virgül yerine nokta girilirse hata yapma olasılığını önlemek için

Val(Replace(TextBox1.Text, ",", ".")

bu kod örneğine ulaşmıştım. sizin örneğinizde bu soruna bir çözüm bulabilirmiyiz?
 
teşekkür ederim evren bey. sayenizde cok sey öğrendim :)

UserFormu kullanacak olan kişi o kadar çok virgüllü sayı girmek zorundaki. :)

Formu gezmiş ve ondalık sayılarda virgül yerine nokta girilirse hata yapma olasılığını önlemek için

Val(Replace(TextBox1.Text, ",", ".")

bu kod örneğine ulaşmıştım. sizin örneğinizde bu soruna bir çözüm bulabilirmiyiz?
Bu kod ile ingilizce versiyon yüklü bir bilgisyarda hata vercektir.
ayrıca denemedim ama 1.125.587,54 textboxa bu sayıyı giripte sizin verdiğiniz kodları kullanarak denermisiniz?Sanırım yine hata verecektir.Sayıdaki Noktalamaların hepsini kullanıp deneyin.
 
:)

evt binlik sayılar yazılırken eğer nokta ayıracı kullanılırsa hata veriyor.

Val(Replace(TextBox1.Text, ",", ".")

bu kodla virgülden sonraki hane sayısı terciği ayarlanamadığı için işime yaramıyor (binlik ayıracı kullanılmazsa virgül-nokta uyumsuzluğu sorununu çözüyor)

Format(TextBox2.Text, "#,##0.00")

bu kod da ondalık sayıları yazarken yanlışlıkla virgül yerine nokta kullanılırsa hata veriyor.

biraz uyuyayım, yarın daha detaylı araştırıcam. vakit ayırdığınız için teşekkürler

iyi geceler :)
 
Son düzenleme:
Tekrar merhaba :)

ondalık sayılar nokta ile ayrıldığında

"Lütfen virgül kullanınız!"


gibi bir ileti veren komut yazsak olmaz mı? :)
 
Tekrar merhaba :)

ondalık sayılar nokta ile ayrıldığında

"Lütfen virgül kullanınız!"


gibi bir ileti veren komut yazsak olmaz mı? :)
6 numaralı mesajımda zaten yapmıştım bunu.:cool:
 
6 numaralı mesajımda zaten yapmıştım bunu.:cool:

:)

If Not IsNumeric(TextBox1.Text) Then

evt sayı yerine harf vs girilirse uyarıyo alıyorum, ama örneğin

virgül yerine nokta kullanılmış ondalık sayılarda işe yaramadı.

korhan bey verdiğiniz linki inceledim. teşekkürler ama orada da çözüm bulamadım :(
 
Selamlar,

Linkteki ilk mesajdaki kod işinize yaramaz mı?

Kod:
Private Sub TextBox1_Change()
    Say = Len(TextBox1) - Len(Replace(TextBox1, ",", ""))
    If Say > 1 Then SendKeys "{BS}"
    If Left(TextBox1, 1) = "," Then TextBox1 = "0,"
End Sub
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Asc(",")
    Case Else
    KeyAscii = 0: MsgBox "Sadece rakam girebilirsiniz.", vbExclamation, "Dikkat !"
    End Select
End Sub
 
inanamıyorum sanırım becerdim :)))

afedersiniz ben karmaşık kodları görünce olmaz yapamam sanmıştım :)

projeye uygulamak için sabırsızlanıyorum. teşekkürler, kolaygelsin
 

Ekli dosyalar

Geri
Üst