• DİKKAT

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

Userform texbox ve lıstbox

Katılım
7 Şubat 2009
Mesajlar
94
Excel Vers. ve Dili
2003 ingilizce
Merhaba;

Hazırlamaya calistigim programda bazi noktalarda yardiminiza ihtiyacim var. Programimda icinde texboxlarin ve listboxlarin oldugu birkac userform mevcut, buna gore;

1 – Texboxlara sadece rakam, ya da sadece tarih, ya da sadece harf girme kontrolunu nasil yapabilirim ve bu kontrolu userform initializeda mi yapmaliyim?

2 – Icinde iki listboxun bulundugu bir userformda;
A) Sadece bir kayitin secilmesini nasil saglarim, listbox 1 de bir kayit secili ise listbox 2 de baska kayit secilmesin gibi?

B) Yukaridaki kontrolden sonra secilen kayidi “Duzelt” butonuna basarak yenı bır userforma verılerı aktarmak ıstıyorum, burada sıkıntım yenı userformdakı texbox valuelerini verirken, verileri aldığım yerin listbox1 yada listbox2 oldugunu kontrol edebılmek, burada “activelistbox” gibi bir atif gerekli sanirim.

Ornek :
Private Sub Userform_Initialize()
TextBox1.Value = userform1. ListBox1.List(ListBox1.ListIndex, 0)
End Sub

C) “Duzelt” butonuna bastigimda acilan Userform “Ekle” butonu ile de aciliyor ancak bu sefer bos geliyor yukaridaki soruda bunu da kullanmaniz gerekebilir diye belirtmek istedim.

3 – Userformlara birde kapatma butonu koydum bu buton “Unload” komutu kullanıyorum ancak kod calısmıyor.
Ornek:
Private Sub CommandButton2_Click()
UserForm3.Show
Userform2.unload
End Sub

4 – Programa ait kodlara ulasilmasini istemiyorum, sanırım .exe olarak kaydetmeme gerekecek bununla da ilgili ufak bir bilgi alabilrsem sevinirim.

Simdiden tesekkurler…
 
textbox a sadece harf girilmesini isyiyorsan..


Kod:
Private Sub TextBox1_Change()
If TextBox1 = "" Then Exit Sub
deg = Mid(TextBox1.Value, Len(TextBox1.Value), 1)
If IsNumeric(deg) = True Then
MsgBox "SADECE HARF GİRİNİZ"
TextBox1 = Mid(TextBox1.Value, 1, Len(TextBox1.Value) - 1)
TextBox1.SetFocus
End If
End Sub
 
textbox a sadece harf girilmesini isyiyorsan..


Kod:
Private Sub TextBox1_Change()
If TextBox1 = "" Then Exit Sub
deg = Mid(TextBox1.Value, Len(TextBox1.Value), 1)
If IsNumeric(deg) = True Then
MsgBox "SADECE HARF GİRİNİZ"
TextBox1 = Mid(TextBox1.Value, 1, Len(TextBox1.Value) - 1)
TextBox1.SetFocus
End If
End Sub


Tarih icin IsDate kullandım sizin örneginizden yola cikarak ama malesef...

yardımlarınıza ihtiyacım var...
 
Sayın hergelex,

Not : Kodları ilgili TextBox'ların EXIT olayına yazınız.

Textbox'lara sadece RAKAM girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "Rakam Girmelisiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
End Sub

Textbox'lara sadece TARİH girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsDate(TextBox1) Then
MsgBox "Tarih Girmelisiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
TextBox1 = Format(TextBox1, "dd.mm.yyyy")
End Sub

Textbox'lara sadece METİN girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
For a = 1 To Len(TextBox1)
b = Mid(TextBox1, a, 1)
If IsNumeric(b) Then
MsgBox "Rakam veya Tarih Giremezsiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
Next a
End Sub

Unload komutu için yanıt vermişler ama şu kod da işinizi görür sanırım.
Userform2.Hide

Kodlara erişimi engellemek için;
VBA bölümüne şifre koyabilirsiniz. Yine de tam güvenli olacaktır, denilemez.
exe uzantılı dosyaya çevirme işlemi için birkaç program var sanırım. Yalnız kendim birebir deneme yapmadığımdan bu programlar hakkında net bir şey söyleyemem. Diyebileceğim tek şey, böyle bir işleme kalkışacaksanız, dosyanızın yedeğini alın derim.
 
Sayın hergelex,

Not : Kodları ilgili TextBox'ların EXIT olayına yazınız.

Textbox'lara sadece RAKAM girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "Rakam Girmelisiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
End Sub

Textbox'lara sadece TARİH girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsDate(TextBox1) Then
MsgBox "Tarih Girmelisiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
TextBox1 = Format(TextBox1, "dd.mm.yyyy")
End Sub

Textbox'lara sadece METİN girilmesi için aşağıdaki kodu kullanabilirsiniz.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
For a = 1 To Len(TextBox1)
b = Mid(TextBox1, a, 1)
If IsNumeric(b) Then
MsgBox "Rakam veya Tarih Giremezsiniz", , " BİLGİ"
TextBox1 = ""
Cancel = 1
Exit Sub
End If
Next a
End Sub

Unload komutu için yanıt vermişler ama şu kod da işinizi görür sanırım.
Userform2.Hide

Kodlara erişimi engellemek için;
VBA bölümüne şifre koyabilirsiniz. Yine de tam güvenli olacaktır, denilemez.
exe uzantılı dosyaya çevirme işlemi için birkaç program var sanırım. Yalnız kendim birebir deneme yapmadığımdan bu programlar hakkında net bir şey söyleyemem. Diyebileceğim tek şey, böyle bir işleme kalkışacaksanız, dosyanızın yedeğini alın derim.


değerli yorumunuz icin tesekkurler, kodları uyarlayıp programda kullandım ancak 3. maddede halen sıkıntım devam ediyor, 2 listboxtan aktif olanı formülde kullanmam gerekli ama bir türlü çözemedim.

ayrıca şu vba şifreleme konusunda biraz daha detay verebilir misiniz?
 
Sayın hergelex,

Listbox isteğiniz ve VBA şifreleme için aşağıdaki dosyaları inceleyin.
 

Ekli dosyalar

  • Listbox.xls
    Listbox.xls
    29.5 KB · Görüntüleme: 80
  • VBA_Sifre_Koyma.JPG
    VBA_Sifre_Koyma.JPG
    85.8 KB · Görüntüleme: 31
Sayın hergelex,

Listbox isteğiniz ve VBA şifreleme için aşağıdaki dosyaları inceleyin.

çok teşekkürler, tam olarak istediğimi karşılamadı ancak yinede ek bir düğme olarak gayet çözüm üretmiş oldunuz, ancak sadece üzerine geldiğinde seçimler değişse düğmeye gerek kalmayacaktı...

ancak halen daha duzelt butonuna basınca hangı kayıtın secılı oldugunu nasıl bır kodla yazmalıyım bulamadım..

dugmeye basıldıgında soyle bır kodum var
userform3.show
textbox1.value=listbox(1 yada 2) hangisi secili ise sonra list indexten satırları okutuyorum.

burada textboxlara gelecek degerler secılı listbox nesnesinin sütün degerlirini alıcak.
 
Sayın hergelex,

Dosya yeniden düzenlenmiştir. İnceleyiniz.

...AÇIKLAMA...
- Kodlar Listbox nesnelerinin MouseMove olayına yazılmıştır. (Yani fare ile üzerinden geçtiğiniz anda diğer Listbox deaktif duruma geçer)

- Aynı şekilde 2 Listbox'un aktif olması da Form1 'in aktifliğine bağlanmıştır. Yani yanlışlıkla bir listbox üzerinden fare ile geçtiğinizde, Form2'ye girip çıkmanız yeterlidir.

- Aktif Listbox'un tespiti ise, Listbox'ların Enabled olayının True / False değerlerinden alınmıştır. Yani Form1'de Listbox1 'i seçtiğinizde Listbox1.Enabled = True değerini alırken, Listbox2.Enabled = False olacaktır. Böylece Form2'ye geçildiğinde hangi Listbox, True ise onun değeri Textbox nesnesine gelecektir.
 

Ekli dosyalar

Geri
Üst