• DİKKAT

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

Ondalık sayılarla işlem

  • Konbuyu başlatan Konbuyu başlatan bskaa
  • Başlangıç tarihi Başlangıç tarihi
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
Merhaba, ondalık sayılarda işlem yaptıramadım. Sanırım virgül-nokta ayırımı. Verileri aldığım excel sayfasında ondalık sayılar virgülle belirtildi. Onları noktaya çevirdim ama yine olmadı. Dosyayı lifebox'a ekledim, link aşağıda yardımcı olabilirseniz sevinirim. Teşekkürler...
 
Ondalık sayılarda çarpma işlemini yaptıramadım. bir userform yaptım. Çarpma işlemininin sonucunu da bir textbox'a atadım ama sayının ondalık kısmını görmediği için sonuç yanlış çıkıyor.
 
Geçenlerde benzer bir konu için arşiv konularını önermiştim. Siz de bir göz atabilirsiniz..

 
Kopya bir dosyada deneyiniz:

Ondalıklı sayılar için DOUBLE kullanabilirsiniz ve ComboBox vs default olarak string olarak işliyor bunun da etrafından dolanmayı deneyin.


Kod:
Private Sub ComboBox1_Change()
    Dim tablo1 As Range
    Dim A As Integer
    Dim B As Double

    Set tablo1 = Worksheets("sayfa1").Range("A2:A22")
    A = ComboBox1.Value

    B = Application.WorksheetFunction.VLookup(A, tablo1.Resize(, 2), 2, False)
    TextBox1.Value = B
End Sub

Private Sub CommandButton1_Click()
    Dim adet As Integer
    Dim B As Double, Boy As Double, toplam As Double

    B = CDbl(TextBox1.Value)
    adet = CInt(ComboBox2.Value)
    Boy = CDbl(TextBox2.Value)

    toplam = B * adet * Boy
    TextBox3.Value = Format(toplam, "0.00")
End Sub
 
Son düzenleme:
Kopya bir dosyada deneyiniz:

Ondalıklı sayılar için DOUBLE kullanabilirsiniz ve ComboBox vs default olarak string olarak işliyor bunun da etrafından dolanmak lazım.


Kod:
Private Sub ComboBox1_Change()
    Dim tablo1 As Range
    Dim A As Integer
    Dim B As Double

    Set tablo1 = Worksheets("sayfa1").Range("A2:A22")
    A = ComboBox1.Value

    B = Application.WorksheetFunction.VLookup(A, tablo1.Resize(, 2), 2, False)
    TextBox1.Value = B
End Sub

Private Sub CommandButton1_Click()
    Dim adet As Integer
    Dim B As Double, Boy As Double, toplam As Double

    B = CDbl(TextBox1.Value)
    adet = CInt(ComboBox2.Value)
    Boy = CDbl(TextBox2.Value)

    toplam = B * adet * Boy
    TextBox3.Value = Format(toplam, "0.00")
End Sub
Merhaba, kodlar için çok teşekkürler. Benim dosyamda sonuç hala yanlış çıkıyor. Hala ondalık kısmı görmüyor. 0,41'i 41 olarak görüyor,1,33'ü 133 olarak görüyor ona göre işlem yapıyor.
 
Arkadaşlar merhaba, ondalık veri ile çarpma işleminin sonucunu hala doğru olarak alamıyorum. Bir ayrıntı daha var. Ben daha önceki dosyalarda da ondalık sayılarla VBA da işlem yaptırdım, onlarda doğru sonucu oldum. Ancak son olarak çalıştığım dosyada ve buraya göndermek için hazırladığım örnek dosyada bu sorunla karşılaştım. Çözüme götürecek bir ipucu olabilir mi yorum yapabilecek arkadaşlara tekrar seslenmek istedim.
 
Nokta-virgül sorunu yaşıyorsunuz. Bu nesnelerde sık karşılaşılan bir durumdur.

C++:
Private Sub CommandButton1_Click()
    Dim adet As Integer
    Dim B, Boy, toplam As Double
    B = TextBox1.Value
    adet = ComboBox2.Value
    Boy = TextBox2.Value
    
    toplam = Replace(B, ".", ",") * adet * Boy
    TextBox3.Value = toplam
End Sub
 
Korhan Bey teşekkürler. Verilen tüm kodları VBA da yazıyorum. Sizin bilgisayarlarda oluyor da benim bilgisayar da mı olmuyor acaba. Şu linke tekrar bakabilir misiniz?
 
Paylaştığınız dosyada benim önerdiğim kod yok. Başka şekilde uygulamışsınız. Ben deneyerek paylaştım.

Önerdiğim kodu deneyiniz.
 
Çok teşekkürler bu sefer oldu. Sorunu çözdüm ama
B = CDbl(TextBox1.Value)
adet = CInt(ComboBox2.Value)
Boy = CDbl(TextBox2.Value)
Application.DecimalSeparator = ","
Application.UseSystemSeparators = False

toplam = Replace(B, ".", ",") * adet * Boy
Bu kod neden çalışmadı, yorum yapabilirseniz, mevzuyu daha iyi anlamış olurum sanırım.
 
Kodu F8 tuşuna basarak adım adım çalıştırarak değişkenlerin aldığı değerleri gözle kontrol edip hataya neyin sebep olduğunu bulabilirsiniz.
 
Merhaba, aşağıdaki kod sonucunda ondalık sayı vermiyor. Yardım rica ediyorum.
Private Sub CMB3_Click()
Dim Kp, Ns As Double
Dim Nd, Nt As Integer
Kp = TextBox16.Value
Nd = TextBox17.Value
Nt = TextBox18.Value
Ns = Replace(Round((Kp * (Nd + (4 * Nt))), 2), ".", ",")
TextBox19.Value=Ns
End Sub
 
Private Sub CMB3_Click()
Dim Kp, Ns As Double
Dim Nd, Nt As Integer

Kp = CDbl(Replace(TextBox16.Value, ",", "."))
Nd = CInt(TextBox17.Value)
Nt = CInt(TextBox18.Value)

Ns = Kp * (Nd + (4 * Nt))

TextBox19.Value = Replace(Format(Ns, "0.00"), ".", ",")
End Sub

Anladığım kadarıyla TextBox değerleri doğru şekilde ondalık sayı olarak alınmıyor ve bu nedenle hesaplamalar doğru yapılmıyor. Bu durumda, TextBox'lardan gelen değerlerin doğru şekilde dönüştürülmesi ve ondalık noktaların doğru işlenmesi gerekiyor.

Deneyiniz
 
Son düzenleme:
Ondalık sayıyı Türkçe formatında virgülle (",") göstermesi için Replace işlevini kullanıyorsunuz, ancak bu, Round işlevi ile tam sayıya dönüştürmeden önce çalıştırıldığında ondalık kısmın kaybolmasına neden olabilir.

Private Sub CMB3_Click()
Dim Kp, Ns As Double
Dim Nd, Nt As Integer
Kp = TextBox16.Value
Nd = TextBox17.Value
Nt = TextBox18.Value
Ns = Kp * (Nd + (4 * Nt))
TextBox19.Value = Replace(Format(Ns, "0.00"), ".", ",")
End Sub

Deneyiniz
Teşekkürler cevabınız için ama maalesef olmadı. Mesela sonuç 9,48 olması gerekirken 948 oluyor.
 
Merhaba, bu ondalıklı sayı sorunumu da çözdüm. Darısı yeni çıkacak ondalık sayı sorunlarına. Tamamen deneyerek buldum. Bilgisayarımda mı sıkıntı vba'da mı sıkıntı bilmiyorum. Ondalıklı sayılarda her seferinde kendi kendime sorun yaşıyorum, her seferinde de birbirine benzer aynı olmayan kodlarla düzeliyor.

Private Sub CommandButton1_Click()
Dim Kp, Ns As Double
Dim Nd, Nt As Integer

Kp = CDbl(Replace(TextBox16.Value, ".", ","))
Nd = CInt(TextBox17.Value)
Nt = CInt(TextBox18.Value)
Ns = CDbl(Replace(TextBox16.Value, ".", ",")) * ((CInt(TextBox17.Value) * 1) + (4 * CInt(TextBox18.Value)))

TextBox19.Value = Replace(Ns, ".", ",")
End Sub
 
Merhaba, aşağıdaki iki sıra kodun aynı olduğunu görüyoruz. Ancak alttaki kod ile ondalık sayı sonucunu alıyorum, üstteki kodla ondalık sayı çıkmıyor. Benim bilgisayarımda ne oluyor? Kendi kendime boş bir mücadele içindeyim.

Ns = CDbl(Replace(TextBox16.Value, ",", ".")) * ((CInt(TextBox17.Value) * 1) + (4 * CInt(TextBox18.Value)))
TextBox19.Value = Replace(Ns, ".", ",")



'Ns = CDbl(Replace(TextBox16.Value, ".", ",")) * ((CInt(TextBox17.Value) * 1) + (4 * CInt(TextBox18.Value)))

'TextBox19.Value = Replace(Ns, ".", ",")
 
Geri
Üst