Ondalık sayılarla işlem

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...
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,781
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Ne istediğiniz belli değil
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Geçenlerde benzer bir konu için arşiv konularını önermiştim. Siz de bir göz atabilirsiniz..

 
Katılım
9 Şubat 2022
Mesajlar
204
Excel Vers. ve Dili
Office 2021 Türkçe (x64)
Altın Üyelik Bitiş Tarihi
09-02-2027
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:
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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.
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
Ç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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
559
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
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:
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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.
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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
 
Katılım
29 Şubat 2024
Mesajlar
30
Excel Vers. ve Dili
2023
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, ".", ",")
 
Katılım
9 Şubat 2022
Mesajlar
204
Excel Vers. ve Dili
Office 2021 Türkçe (x64)
Altın Üyelik Bitiş Tarihi
09-02-2027
Excelin bi dertleri bi türlü bitmiyor..
 
Üst