• DİKKAT

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

Textboxa girilen değeri farklı textboxta otomatik toplama

  • Konbuyu başlatan Konbuyu başlatan byfika
  • Başlangıç tarihi Başlangıç tarihi

byfika

Altın Üye
Altın Üye
Katılım
15 Ağustos 2009
Mesajlar
512
Excel Vers. ve Dili
Excel Vers. ve Dili : Ofis 2016 Tr
Merhabalar,
Textboxlara girilen verileri, farklı textboxda otomatik toplama yaptırmaktayım. Fakat toplam yapılacak textbox sayısı 40 olduğundan Val(TextBox1.Value) koduyla hazırlanan kodlar çok uzun. Örnekte daha detaylı açıklama mevcut. Toplama kodunu kısaltma olanağı varmı bunu öğrenmek istiyorum.
Bilgileriniz için teşekkürler.
 

Ekli dosyalar

Merhaba.

Doğru işlem aslında ClassModule (pek ilgilendiğim bir konu değil) kullanmak sanırım ama aşağıdaki şekilde de sonuç alırsınız.

-- 1'den 40'a kadarki TextBoxlar için aşağıdaki kodlardan birini çoğaltın.
(biri yazarken, diğeri TextBox'tan ayrılınca işlem yapar)
.
Kod:
[B][COLOR="blue"]Private Sub TextBox1_Change()[/COLOR][/B]
    TOPLA
[B][COLOR="Blue"]End Sub[/COLOR][/B]

[B][COLOR="Red"]VEYA[/COLOR][/B]

[B][COLOR="Blue"]Private Sub Textbox40_Exit(ByVal Cancel As MSForms.ReturnBoolean)[/COLOR][/B]
    TOPLA
[B][COLOR="blue"]End Sub[/COLOR][/B]
-- En alta da aşağıdaki kod blokunu ekleyin.
.
Kod:
[B][COLOR="blue"]Sub TOPLA()[/COLOR][/B]
    For txt = 1 To 40
        If Val(Controls("TextBox" & txt)) > 0 Then
            deg = deg + Val(Controls("TextBox" & txt))
        End If
    Next
    TextBox41 = deg
[B][COLOR="Blue"]End Sub[/COLOR][/B]
 
Merhaba.

Doğru işlem aslında ClassModule (pek ilgilendiğim bir konu değil) kullanmak sanırım ama aşağıdaki şekilde de sonuç alırsınız.

-- 1'den 40'a kadarki TextBoxlar için aşağıdaki kodlardan birini çoğaltın.
(biri yazarken, diğeri TextBox'tan ayrılınca işlem yapar)
.
Kod:
[B][COLOR="blue"]Private Sub TextBox1_Change()[/COLOR][/B]
    TOPLA
[B][COLOR="Blue"]End Sub[/COLOR][/B]

[B][COLOR="Red"]VEYA[/COLOR][/B]

[B][COLOR="Blue"]Private Sub Textbox40_Exit(ByVal Cancel As MSForms.ReturnBoolean)[/COLOR][/B]
    TOPLA
[B][COLOR="blue"]End Sub[/COLOR][/B]
-- En alta da aşağıdaki kod blokunu ekleyin.
.
Kod:
[B][COLOR="blue"]Sub TOPLA()[/COLOR][/B]
    For txt = 1 To 40
        If Val(Controls("TextBox" & txt)) > 0 Then
            deg = deg + Val(Controls("TextBox" & txt))
        End If
    Next
    TextBox41 = deg
[B][COLOR="Blue"]End Sub[/COLOR][/B]

Ömer Bey, gönderdiğiniz cevabı şimdi gördüm. Kusura bakmayın geç cevaplıyorum.

Private Sub TextBox1_Change()
TOPLA
End Sub


Yukarıdaki Kodu textbox1 den textbox 40 a kadar yazıp denedim ( gerçi diğer ikinci koduda denedim oda işlem yapıyor) sonra son kodla birlikte işlemi yapıyor. Benim gönderdiğim koda göre bu kodlar çok daha kısa ve işlevsel oldu. Ayrıca bahsettiğim sıra sıra toplamınada uyarladım. Tam istediğim gibi çalıştı. Örnek dosyayı yükledim umarım başka arkadaşlarada yol gösterir. Yardımlarınız ve yol gösterici bilgileriniz için minnettarım. Çok teşekkürler.
Saygılarımla.
 

Ekli dosyalar

Son düzenleme:
Merhaba Ustalarım
Benim sorum Otomatik Bölme işlemi ile ilgili.Aşağıdaki Kod ile Otomatik Toplama Yapabiliyorum.Ama bölme işlemi yaptıramadım.hangi kodu Kullanmalıyım.Şimdiden Saygılarımla teşekkür ederim.

Private Sub TextBox1_Change()
TOPLA
End Sub
Private Sub TextBox2_Change()
TOPLA
End Sub

Sub TOPLA()
For txt = 1 To 2
If Val(Controls("TextBox" & txt)) > 0 Then
deg = deg + Val(Controls("TextBox" & txt))
End If
Next
TextBox3 = deg
End Sub
 
Geri
Üst