Soru Textbox Girişi İçin Veri Kısıtlama Hakkında..

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Merhabalar,

Textbox 1 için sadece ; "range" sayfasında "B3:B14" değerleri yazılabilsin istiyorum. Forumda yer alan örneklere baktığımda isteğime yakın bir örnek te karakter kısıtlaması yapılmış ;
Kod:
Private Sub TextBox1_Change()
deg = TextBox1.Text
If UCase(Right(deg, 1)) = "A" Then
ElseIf UCase(Right(deg, 1)) = "B" Then
ElseIf UCase(Right(deg, 1)) = "C" Then
ElseIf UCase(Right(deg, 1)) = "D" Then
ElseIf UCase(Right(deg, 1)) = "E" Then
Else
MsgBox Right(deg, 1) & " Hatalı Karekter Girdiniz."
End If
End Sub
Kodlar sayın halit3 'e aittir.

Bu kodları kendim için uygularken kendi değerlerimi yazıyorum ve isteğimi karşılasa da kısıtlama yapacağım değerler fazla olduğundan ve 90 adet textbox olduğundan oldukça fazla işlem yapmam gerekiyor:-(
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
B3:B14 hücrelerindeki kriterler nedir?

.
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
1529849321335.png

Merhaba Haluk Bey,
Bir tanesi için yapılır ise diğer textboxlar için kendim uygularım diye düşünüyorum.
Mesela;
B sütunundaki değerleri Textbox 1-2
C sütunundaki değerleri Textbox 3-4 v.s . diye devam edecek.
Yalnız şöyle bir durum söz konusu olacak şöyle ki , B sütununa baktığımızda 8 ile 19 arası görünüyor.Burada değil ama başka sütundaki değerlerde aralarda atlama olabiliyor o yüzden sütundaki değerlerin bire bir aynısı dikkate almamız gerekiyor.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
TextBox yerine ComboBox kullansanız ?

.
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Haluk Bey, düşündüm aslında dediğinizi fakat giriş çok olduğundan yani txtboxlar çok fazla , resimdeki kısıtlayıcı verilerde çok olduğundan textbox girişi daha çabuk olduğu için Tetxbox tercih etmek zorunda kalmıştım.:-(
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Sonuçta TextBox veya ComboBox kullansanız, kullanılacak nesnelerin adedi sabit.... öyle değil mi?

ComboBox kullanırsanız; bunların herbirinin RowSource özelliğini Properties penceresinden belirledikten sonra, kullanıcıya kalan iş mouse ile tıklayarak verilerden birini seçmek olacak ..... öyle değil mi?

Bu arada, bu işleri UserForm üzerinde yapıyorsunuz sanırım.... yoksa, sayfa üzerinde olsa zaten klasik Data Validation ile sorun çabuk çözülürdü.

.
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Sonuçta TextBox veya ComboBox kullansanız, kullanılacak nesnelerin adedi sabit.... öyle değil mi?

ComboBox kullanırsanız; bunların herbirinin RowSource özelliğini Properties penceresinden belirledikten sonra, kullanıcıya kalan iş mouse ile tıklayarak verilerden birini seçmek olacak ..... öyle değil mi?

Bu arada, bu işleri UserForm üzerinde yapıyorsunuz sanırım.... yoksa, sayfa üzerinde olsa zaten klasik Data Validation ile sorun çabuk çözülürdü.

.
Evet nesne adedi sabit olacaktır. Hocam da veri girişi yapacak aslında textbox olarak anlatmıştım:-( Ve combobox ile isterseniz siz seçin demiştim kendisi de yok ben yazarım tek tek dediği için bende o şekilde yapmıştım. Bu kadarını bile kabul ettirebilmem için neler neler anlattım inanın..Yoksa bütün değerleri tek tek manuel olarak dosyalara yazarak yapıyorum. Kendimce işlerimi hızlandırmak ve hata yapma olasılığımı en aza indirebilmek için kendimce ve forumda saygı değer siz hocalarım yardımı ile bir şeyler yapmaya çalışıyorum.

Evet Haluk Bey, userform üzerinden veri girişi yapıyorum.
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Textbox nesnesi için 1 nolu mesajımda belirtmiş olduğum işlem mümkün müdür?:unsure:
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Textbox nesnesi için böyle bir kısıtlama mümkün müdür?:unsure::giggle:
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Sorunuzda değer girişi işlemi var. Öncelikle belirttiğiniz textboxlara harf girişini engellemeniz sonra da sadece 8-19 aralığında sayı girişine izin vermeniz gerekli gibi görünüyor. Aşağıdaki kodları belirttiğiniz textboxlar için deneyin.
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1.Value) Then
Cancel = False
Else
Cancel = True
Beep
MsgBox ("Sadece sayı girin!")
Exit Sub
End If
If TextBox1.Text >= 8 And TextBox1.Text <= 19 Then
Cancel = False
Else
Cancel = True
Beep
MsgBox "Belirlenen aralık dışında veri girişi yaptınız..."
End If
End Sub
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Sayın askm, öncelikle ilginiz için teşekkür ederim. Evet dediğiniz şekilde sadece rakam girilmesi için kısıtlama iyi olur. Lakin 3 nolu mesajımda bulunan resimdeki diğer değerleri de yapılan kodlara bakarak yapmayı düşünüyordum. B sütununda aralıksız 8 ile 19 arası uygun oluyor. Ve söylemiş olduğunuz kodlar gayet iyi fakat, diğer veri girişlerindeki kısıtlama değerlerinde aralarda atlamalı olanlar var. Mesela , 3 nolu mesajımda P sütununda bulunan değerlerde 17 ile 51,2 arası olduğu halde 31,32,33 v.s değerleri yerine 31,2,32,2,33,2 v.s değerleri bulunmakta, bunu nasıl uygulayabiliriz:unsure::giggle:
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Bütün alanlar için aşağıdaki kodu deneyin o zaman.
Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1.Value) Then
Cancel = False
Else
Cancel = True
Beep
MsgBox ("Sadece sayı girin!")
Exit Sub
End If
say = WorksheetFunction.CountIf(Sheets("range").Range("B2:B30"), TextBox1.Text)
If say > 0 Then
Cancel = False
Else
Cancel = True
Beep
MsgBox "Belirlenen aralık dışında veri girişi yaptınız..."
End If
End Sub
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Sayın askm, kusura bakmayın çok basit olacak ama yaklaşık 120 adet textbox nesnesi bulunmakta, 13 nolu mesajınızda bulunan bu kodları hepsi için uygulamamda bir sakınca olmaz dimi:unsure::giggle:
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aynı şarta sahip textboxların hepsine uygulayabilirsiniz.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Yeşim Hanım, yazmayayım dedim ama yine dayanamadım ........ Hocanıza söyleyin, şu işi sayfa üzerinde yapın.

UserForm ile yapınca ne oluyor yani..... dünyanın en saygın bilimsel çalışması mı oluyor?

.
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Hmmm:(:giggle:
Haluk bey, yapmışken güzel olsun istemiştim.:giggle: Çünkü sayfa o kadar karmaşık oldu ki, bakınca çok karmaşık görünüyor:unsure:
 

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Sayın askm, 13 nolu mesajınızdaki kodları tek tek textbox lara uyarlamaya çalışıyorum. Fakat belirlenen hücre aralığında olmasına rağmen virgüllü sayıları aralık dışında görüyor:-( Tam sayılarda sorun olmuyor. :unsure:
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Yeşim Hanım; madem görsellikte ısrarcısınız, o zaman aşağıdaki basit kodu bu iş için kullanabilirsiniz......

Ben örnek olarak TextBox1 nesnesinin içeriğini sizin "range" sayfasındaki K3:K17 aralığı ile kontrol ettim.

Siz, kodu kendi çalışmanıza uyarlarsanız diye düşünüyorum......

Kod:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo errMsg:
    x = Application.WorksheetFunction.Match(CDbl(TextBox1.Value), Sheets("range").Range("K3:K17"), False)
    If x > 0 Then Exit Sub
errMsg:
    MsgBox "Hatalı giriş .... Tekrar deneyin"
    Cancel = True
    TextBox1 = ""
End Sub
.
 
Son düzenleme:

yesimgurol

Altın Üye
Katılım
8 Aralık 2011
Mesajlar
942
Excel Vers. ve Dili
Excel 2016,32bit
Altın Üyelik Bitiş Tarihi
18-11-2024
Haluk bey, sonunda dayanamadınız siz de yardımcı oldunuz:giggle: :giggle:
Çok teşekkür ederim. Bu arada 120 tane textbox nesnesi için uyarlarsam sorun olmaz dimi yaa:unsure: hani baya bir fazla olacak ya onu düşündüm şimdi:unsure::oops:
 
Üst