• DİKKAT

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

Gizli haldeki ardışık metinkutularının, veri girdikçe, sırayla gözükür hale gelmesi.

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Textbox1, textbox2 şeklinde sıralanmış halde bulunan metinkutuları var. Bunlardan sadece birincisi gözükür halde, diğerleri ise gizli (.visible=false).

Bu metinkutularına veri girerken, aralarda boş kutu kalmaması gerekiyor. Bunun için de, gizli halde tuttuğum metin kutularının, bir önceki metinkutusuna veri girildiğinde gözükür hale gelmesini istiyorum. Yani, 10 metinkutusu var, ama sadece 1. kutu gözüküyor. Birinci kutuya veri girdiğimizde 2. kutu gözükür olacak, 2. kutuya veri girdiğimizde 3. kutu gözükür hale gelecek...

Bunu metinkutularına teker teker tanımlayacağım kodlarla yapabilirim; ancak metinkutusu sayısı oldukça fazla olduğundan uzun sürecek bir iş olur ve de hata olasılığı artar diye düşünüyorum. Sınıf modülü tanımlayarak bahsettiğim işlemin daha kolay bir şekilde, birkaç satır kod yazarak yapılabileceğini sanıyorum. Sınıf modülü konusunda bilgisi olan veya bahsettiğim uygulamanın, farklı bir yöntemle daha kolay hazırlanabileceğini düşünen arkadaşlarımın yardımcı olmasını diliyorum.

Herkese şimdiden teşekkürler. İyi çalışmalar.
 
Leventm'in böyle bir örneği vardı. Şimdi bulamadım. bir araştırırsan.
O örnekte çok sayıda TexBox üretmene gerek yoktu. Çalışma anında gerektiğ kadar üretebiliyordun.
 
Son düzenleme:
Sayın omerceri, ilginizden dolayı çok teşekkür ederim. Benim formum hazır vaziyette olduğundan, üzerindeki metinkutularında değişiklik yapmak istemiyorum. Sadece, bahsettiğim şekilde gizli-görünür olması yeterli olacak. Bir diğer husus da, ortalardan bir veri sildiğimde, sonraki metinkutularının da gizli hale gelmesi gerekiyor. İlginize tekrar teşekkür ederim..
 
Bir class module oluşturun ve bu modüle aşağıdaki kodları kopyalayın. (Modül adı class1 olmalıdır)

Kod:
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
ad = Replace(txt.Name, "TextBox", "")
If txt = "" Then
For a = ad + 1 To 10
UserForm1.Controls("textbox" & a) = ""
UserForm1.Controls("textbox" & a).Visible = False
Next
Exit Sub
End If
If ad < 10 Then UserForm1.Controls("textbox" & ad + 1).Visible = True
End Sub

Aşağıdaki kodlarıda userformun kod sayfasına kopyalayın.

Kod:
Dim txt(10) As New Class1
Private Sub UserForm_Initialize()
For a = 1 To 10
Set txt(a).txt = Controls("textbox" & a)
Next
End Sub
 
Hocam çok teşekkür ederim. Her zamanki gibi harikasınız. Saygılar...
 
Say&#305;n Leventm;

&#199;ok &#231;al&#305;&#351;maya &#246;rnek olabilecek bu kodlar&#305;n&#305;z i&#231;in ben de &#231;ok te&#351;ekk&#252;r ederim.
 
Sn leventm, Sn ömerceri'nin yolladığı programı kendi programıma entegre edemiyorum benim çoğaltmak istediğim 4 tane texbox: Malın cinsi, miktarı, fiyatı, tutarı textboxları. Dosyayı ekliyorum, ne yapmalıyım?
 
Arkadaşlar dosyalar inmiyor. Yardımcı olabilir misin? Çok kullanışlı bir kod faydalanmak istiyorum.
 
Geri
Üst