 |
Bu soruya genel itibarı ile aşağıdaki gibi cevaplar verilbilir.
Private Sub TextBox1_Change() Me.TextBox1.Value = Format(Me.TextBox1.Value,
"###,###") End Sub
Private Sub TextBox1_Change()
TextBox1 = Format(TextBox1, "###,0")
End Sub
İşlemin gerçek çözüm ve açıklaması ise aşağıda verilmektedir. Nedenine
gelince, soru aşağıdaki gibi devam edecektir.
"Yukarıdaki sorunun devamı olarak;
Userform'da bulunan TextBox'ları yukarıdaki makro ile binlik ayracı yaptık,
ancak TextBox'ların toplama yapmak istenildiğinde toplama hatalı oluyor çözüm."
1. TextBox nesnesi adı üzerinde, yani Metin kutusu demektir. İçerisine
yazdığınız her karakteri öncelikle metin olarak algılar.
2. "+" işleci
her ne kadar matematiksel bir işleç olsa da bazı alanlarda "&" işlecinin
vazifesi olan birleştirme görevini görür.
Şimdi bu iki maddeyi bir arada
düşündüğümüzde, TextBox1 ve TextBox2 ye yazdığımız rakamların TextBo3'te
toplanması yerine birleştirilmesinin mantığını anlamış oluruz. Dolayısı ile
neden toplamada yapmıyor da çarpma ve çıkartmada yapıyor sorusunu engellemiş
oluruz değil mi?
Eğer TextBox içerisinde kullanacağınız rakamlara binlik
ayracı uygulayacaksanız o halde büyük bir sayı yazacaksınız demektir. Şimdi
aşağıdaki örneği uygulamalı olarak deneyiniz.
Örnek
Bir UserForm
üzerine 3 adet TextBox nesnesi ve 1 adet CommandButton nesnesi yerleştirin.
Aşağıdaki kodları UserForm'unuza kopyalayın.
Private Sub CommandButton1_Click()
Dim t1 As Double
Dim t2 As Double
t1 = TextBox1.Value
t2 = TextBox2.Value
TextBox3 = t1 + t2
End Sub
Private Sub TextBox1_Change()
TextBox1 = Format(TextBox1, "###,0")
End Sub
Private Sub TextBox2_Change()
TextBox2 = Format(TextBox2, "###,0")
End Sub
Siz isterseniz TextBox3'ü de formatlayabilirsiniz.
Ne
Yaptık?
t1 ve t2 adında iki değişkeni büyük
sayı formatında tanımladık. Toplanacak TextBox'ların Value'sini bu
tanımladığımız değişkenlere atadık. Böylece TextBox'lar içerisine yazılmış olan
sayısal karakterleri metin algılamasından kurtarmış olduk. Sonra da textBox3'te
bunları toplattık.
İşin özü ve açıklaması burada. Bunu neden uzun
uzun anlattım? Çünkü yukarıda
bahsettiğimiz iki yöntem çözüm olmakla birlikte, programcılık anlayışı olarak biraz
anlaşılmaz. Ben bunu açıklamaya çalıştım.
Umarım faydalı olmuştur. |