• DİKKAT

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

TextBox'tan değişkene veri alma hatası

Katılım
1 Mart 2010
Mesajlar
13
Excel Vers. ve Dili
excel 2010 Türkçe
Merhaba,

Bir TextBox (Net) içindeki ondalıklı sayıyı Double olarak tanımlı bir değişkene (nw) atamak istiyorum.

Özetle;

Dim nw As Double
nw = Net.Value

gibi bir işlem yaptığımda Net isimli TextBox içinde 12.3 değeri varsa nw=123 oluyor.

Neden kaynaklanıyor olabilir?
 
Textbox'a 12.3 yerine 12,3 yazınca oluyor mu?

(ondalık işareti olarak nokta yerine virgül kullanarak)


.
 
Haluk Bey,

TextBox'a elle değer girip virgül kullanırsam problem olmuyor. Ancak TextBox içindeki değer bir dizi işlemden geçerek TextBox'a otomatik geliyor. Gerektiğinde elle değiştirilebiliyor. Asıl enteresan olan şu ki; iki TextBox var. İki değer de aynı işlemlerden geçip TextBox içine noktalı olarak geliyor. Fakat iki değişkenden biri nokta ile doğru değer alırken diğeri virgül ile doğru değer alıyor.
 
Komutları adım adım denetledim. Sorunun nerede olduğunu buldum ama iki aynı koşulda neden farklı sonuçlar oluşuyor anlayamadım. Şöyle ki;

Kod:
'Birinci TextBox Gross değeri "12.3"(String)
'İkinci TextBox Net değeri "12.3"(String)

Dim gw, nw As Double

Private Sub Gross_Change()
gw = Gross.Value
'gw "12.3" değer döndürüyor (String)
End Sub

Private Sub Net_Change()
nw = Net.Value
'nw 12.3 değer döndürüyor (Double)
End Sub

İki değişken de Double olarak tanımlanmışken neden biri String biri Double değer döndürüyor? :???:
 
Merhaba,

Tanımlamayı aşağıdaki gibi düzelterek deneyin.

Dim gw As Double, nw As Double

Bu arada Sayın Haluk hocama da selamlar.

.
 
Merhabalar Omer Bey,

Ben de simdi telefonun ekranindan cevap yazmaya calisiyordum ki, sizin gerekli cevabi vermis oldugunuzu gordum.

Selamlar,


.
 
Ömer Bey, Haluk Bey,

Çok teşekkür ederim. Çok basit bir hata için vaktinizi aldım. Ben iki değişkeni de String olarak tanımlayarak sayenizde problemi çözdüm.

Fakat projemde beni etkilemese de şu problem aklıma takıldı. Bir double değeri (Örneğin 12.3) Text Box'a değer olarak atarsak TextBox "12.3" string değerini alıyor. Daha sonra TextBox değerini double olarak tanımlı başka bir değişkene verirsek değişken 123 değerini alıyor.

Bunun pratik bir çözümü var mı? Mesela TextBox'ın değerini Double olarak tutması mümkün mü?
 
Bu bizim sayı biçimindeki ondalık yerine ","(virgül) , binlik ayıracı yerine ise "."(nokta) kullanmamızdan kaynaklanıyor diye biliyorum.
Uluslararası sayı biçiminde tam tersi olan, ondalık yerine "."(nokta) binlik yerine ","(virgül) kullanılır.

Siz textboxa hesaplama ile veri aldığınızda, bu yüzden ondalık bölümü "." nokta olarak geliyor. Bu değeride sayıya çevirirken bizim sayı biçimine uymadığı için yukarıda bahsettiğiniz hatayı alıyorsunuz.

Bunun önüne geçmek için hesaplamayı textboxa alırken formatını değiştirseniz istediğiniz olur.

Bir örnek:

Kod:
Private Sub CommandButton1_Click()
    
    Dim deg As Double
    
    TextBox1 = Format(2 / 4, "#,##0.0")

    deg = TextBox1

    [A1] = deg
    
End Sub

.
 
Ömer Bey teşekkür ederim. Şimdi taşlar yerine oturdu.
 
Geri
Üst