• DİKKAT !

    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 Dosya Yükleme tamamen ücretsizdir.

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

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

ERKAN YILMAZ

Yeni Üye
Katılım
16 Ocak 2022
Mesajlar
431
Aldığı beğeni
144
Excel V
Office 365 TR
Konu Sahibi
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.

Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
 
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.
 
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.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
yada sadece şu kodu ekleyin.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
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.
 
Konu Sahibi
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.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
yada sadece şu kodu ekleyin.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
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
 
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ü.
 
Konu Sahibi
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.

Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
 
Çö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...
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst