• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Userform'dan Excel'e virgülden sonra ondalık rakamlarının yanlış gelmesi hk.

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

ERKAN YILMAZ

Bronz Üye
Kullanıcı Bilgileri
Katılım
16 Ocak 2022
Mesajlar
295
Çözümler
1
Aldığı beğeni
116
Excel Versiyonu
Office 365 TR
Konuyu Başlatan
Merhaba,

1 nolu ekran görüntüsünde göndermiş olduğum texbox142 ye gelen döviz kurları excel sayfasına kayıt ediyor iken 2 nolu ekran görüntüsünde görüldüğü gibi çok farklı bir şekilde kayıt etmektedir. Normalde excel sayfasına 8,5143 olarak kayıt etmesi gerekiyor.

Konuyla ilgili desteklerinizi rica ederim.

Şimdiden teşekkür ederim.

 

Ekli dosyalar

  • 2.JPG
    2.JPG
    90.5 KB · Gösterim: 26
  • 1.JPG
    1.JPG
    95.4 KB · Gösterim: 26
Textboxlara girilen değer sayı olsa bile çıkışta "String" tipli yani metin olarak çıkarlar.
Bu sebeple textbox verisini okuturken sayıya çevirmek sanıyorum bu hatayı düzeltecektir.
Range("T2") = CDbl(TextBox1.Value)
 
Ayrıca T sütununun biçimlendirmesinin genel veya sayı olduğunu kontrol edin.
 
Merhaba,
Bilgisayarınızın bölgesel ayarlarında basamak gruplandırma ","
Ondalık simgesi "."
olarak seçilmiş olduğundan bu hatayı alıyorsunuz.
"T" sütununda sayı olarak biçimlendirdiğiniz hücreleri, virgülden sonra 4 basamak olacak şekilde ayarlamışsınız. Bu da 85,143 ifadesini "Seksenbeşbinyüzkırküç" olarak algılayıp devamına da 4 adet "0" sıfır ekliyor.
Bölgesel ayarlardan gerekli değişiklikleri yapabilirsiniz.
 

Ekli dosyalar

  • Ekran Alıntısı.JPG
    Ekran Alıntısı.JPG
    150.3 KB · Gösterim: 12
textbox142 deki verinin ondalık ayracı nokta,
siz sistemde virgül kullandığından sorun oluyor.
Ya sistem bölgesel ayarlarınızdan ondalık ayracı nokta yapın,
yada kaydet butonundaki kodlardan ilgili satırı aşağıdaki gibi değiştirin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yada sadece şu kodu ekleyin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Sayın ERKAN YILMAZ önerdiğim kod değişikliğini uyguladınız mı? Ben sistem ayarlarında bir hata olduğunu düşünmüyorum.
Çünkü 2. resimde sütunlara bakınca verileriniz normal görünüyor. Çünkü;
1- M ve O sütunları sayısal değer içeriyor ve hücreleriniz doğru biçimlendirilmiş.
2- Dosyanızda sayılarda ondalık ayracı olarak "," görünüyor.
Eğer sistem ayarlarından ondalık ayracı olarak "." seçilmiş olsaydı Excel sayı içeren bütün hücreleri otomatik olarak "." ile gösterirdi.
Textbox değerini okuturken sayıya çevirmeniz problemi çözecektir.

Range("T2") = TextBox1.Value
yerine
Range("T2") = CDbl(TextBox1.Value)
yazacaksınız.
 
textbox142 deki verinin ondalık ayracı nokta,
siz sistemde virgül kullandığından sorun oluyor.
Ya sistem bölgesel ayarlarınızdan ondalık ayracı nokta yapın,
yada kaydet butonundaki kodlardan ilgili satırı aşağıdaki gibi değiştirin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yada sadece şu kodu ekleyin.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Merhaba Üstad,

urunTanimlamaSayfa.Range("T" & i).Value = CDbl(Replace(Me.TextBox142, ".", ","))

bu kod ile değiştidim şu anda tam istediğim gibi excele kayıt yapıyor.

Textbox141 in kayıt formatında problem vardı onu da senin az önceki önerin ile değiştirdim ama textbox141 in userformda formatını değiştiremedim.

Uruntanimlamagirisformu.TextBox141.Value = Format((TextBox140 / (TextBox137 * 1)), "##0.00")

İşaretlediğim yer 2,34 çıkıyor aslında çıkması gerek 234,00 gibi çıkması lazım
 

Ekli dosyalar

  • Ekran Alıntısı.JPG
    Ekran Alıntısı.JPG
    120.2 KB · Gösterim: 9
Sayın ERKAN YILMAZ sayı alan ve bir hücreye yada başka bir textboxa sayı gönderen bütün textboxlar için aşağıdaki işlemi yapmanız gerek.
asdasdasd = falanuserform.textboxX.Value
ifadesinde = 'in sağında kalan ifadelerde kaç tane textbox geçiyorsa hepsini CDbl() ifadesinin içine almanız gerek.
= 'in soluna işlem yapmaya gerek yok.
asdasdasd = CDbl(falanuserform.textboxX.Value) gibi.

asdasdasd = (txtbox2 * textboxt5) - textbox 3
yerine
asdasdasd = (Cdbl(txtbox2) * Cdbl(textboxt5)) - Cdbl(textbox3)
yada
asdasdasd = (Cdbl(txtbox2.Value) * Cdbl(textboxt5.Value)) - Cdbl(textbox3.Value)
Value zaten varsayılan değerdir. Yani textbox2 ile textbox2.Value aynı anlama gelir.

Alttaki resim bende görünen şekli. Eğer problem sistem ayarlarında olsaydı T sütunu bende hatasız görünürdü.
 

Ekli dosyalar

  • R1.jpg
    R1.jpg
    115.5 KB · Gösterim: 5
Sayın ERKAN YILMAZ sayı alan ve bir hücreye yada başka bir textboxa sayı gönderen bütün textboxlar için aşağıdaki işlemi yapmanız gerek.
asdasdasd = falanuserform.textboxX.Value
ifadesinde = 'in sağında kalan ifadelerde kaç tane textbox geçiyorsa hepsini CDbl() ifadesinin içine almanız gerek.
= 'in soluna işlem yapmaya gerek yok.
asdasdasd = CDbl(falanuserform.textboxX.Value) gibi.

asdasdasd = (txtbox2 * textboxt5) - textbox 3
yerine
asdasdasd = (Cdbl(txtbox2) * Cdbl(textboxt5)) - Cdbl(textbox3)
yada
asdasdasd = (Cdbl(txtbox2.Value) * Cdbl(textboxt5.Value)) - Cdbl(textbox3.Value)
Value zaten varsayılan değerdir. Yani textbox2 ile textbox2.Value aynı anlama gelir.

Alttaki resim bende görünen şekli. Eğer problem sistem ayarlarında olsaydı T sütunu bende hatasız görünürdü.

Merhaba Sayın ubak üstadım, ekran görüntüsünde de göndermiş olduğum şekilde yeni dosyamda kodları değiştirerek kayıt kodlarını değiştirdim ve excel dosyasına kayıt ediyorken ekran görüntüsünde görüldüğü üzere problem yok sadece userformda ki textbox141 de yanlış gözüküyor iki resmi karşılaştırdığımız zaman 1 nolu resimde 2,34 çıkıyor ama 2 nolu resimde kayıt ettiğim 234,00 doğrusu bu ben textbox141 de de 234,00 şeklinde çıkmasını istiyorum.

 

Ekli dosyalar

  • 1.JPG
    1.JPG
    138.9 KB · Gösterim: 8
  • 2.JPG
    2.JPG
    88.5 KB · Gösterim: 7

Ekli dosyalar

  • ekstra satış.xlsm
    1.4 MB · Gösterim: 26
Çözüm
ERKAN YILMAZ Bey önce sayfadaki hücre biçimlendirmelerini kontrol ettim. (Sayı olmayanları düzelttim.)
Sonra da size ısrarla kodlara yapmanızı söylediğim değişiklikleri yaptım.
Sayı içeren Textbox verisini okuturken ister hücreye yazın ister başka bir textboxa yazın farketmez.
Okuduğunuz veri metin olarak geldiği için okurken sayıya çevirmek gerek.

Peki neden = işaretinin sağını dedik?
Çünkü sağ taraf okunan veri sol taraf yazılan veridir.

range("A1") = cdbl(userform1.textbox1.value)
textbox1 verisini okuduk sayıya çevirdik ve a1 hücresine yazdık.

textbox2 = cdbl(userform1.textbox1.value)
textbox1 verisini okuduk sayıya çevirdik ve textbox2 ye yazdık.

Soru sorduğunuzda aldığınız cevabı dikkate almakta fayda var. Kalın sağlıcakla...
 
Son düzenleme:
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst