Metin Kutusuna Girişi Sınırlama-1

Excel-Userform

[Örnek dosyayı indirmek için sayfanın en altına bakın]
 

Excel userform da metin kutularının (textbox) kullanım amacına göre girilmesi istenen veri için çeşitli şartları sağlaması beklenebilir. Mesela isim girilsin diye oluşturulmuş bir metin alanına rakam girilmemesi beklenir, ya da bir ürünün adetinin girileceği alana harf girilmemesi beklenir. Bunun yanında girilen metnin uzunluğunun da belli bir değerin üstünde olmaması ya da belli bir uzunluktan az veya çok olmaması istenebilir.E-posta veya telefon numarasında olduğu gibi belli bir motifte giriş yapılması da beklenebilir. Fakat işler beklentilerle yürümez. Kullanıcı ne kadar dikkatli de olsa zaman zaman hatalar vukuu bulabilir. Şahsen ben prosedür gereği doldurmam gerektiğinde, e-posta alanlarını kafadan atmaya meyilliyim. Ama karşı taraf için alanların doğruluğu hayati önem taşıyabilir. Eğer verilrle sayısal işlem de yapılacak ise özellikle giriş hatası istenmez. Bu sebeplerle girişlerin doğru olması için dua etmek yerine, veya her tarafa uyarı yazıları koymak yerine, girişlerin teknik anlamda doğru olduğunu siz garanti etmelisiniz.

Başlayalım;

Diyelim ki giriş alanımız isim için ayrılmış. Kullanıcının ismi herhangi bir uzunlukta olabilir. (Çok önemsiyorsanız: şuraya bakın)Fakat sadece metin olması gerektiğine eminsiniz. Peki bunu nasıl sağlayabilirsiniz:

-Kullanıcıya uyarı yazıları çıkartarak (böylece hatalı girişlerin büyük ihtimalle dikkatsizlik sonucu olduğunu düşünebilirsiniz)

-Metin kutusundan çıkıldığı anda veya metin kutusuna bir karakte girildiği anda kontrol ederbilirsiniz

Doğal olarak bizim ilgi alanımız ikincisi. Userform üzerinde birçok metin alanı, düğme vs varsa kullanıcı bazen fare imleci ile, bazen de tab tuşu ile başka alanlara geçebilir. Ya da kulanıcı girişini tamamladığında otomatik olarak başka alana geçiliyordur ya da enter tuşu gibi bir tuş ile bu sağlanıyordur. Geçiş şekillerinin çeşidi çok. Eğer en sonda kontrol yapacaksanız her bir geçiş olayı için kod yazmanız gerekir. En iyisi her karakter girildiğinde kontrolü yapmak.

Diyelim ki her karakter girildiğinde kontrol yaptık. Rakam girildi ise ne yapalım?”Giriş hatalı, baştan girin” uyarısı çıkarmak çok iyi bir çözüm olmaz.En iyisi hiç rakam girilemesin. Kullanıcı, rakamlara bastığında metin kutusuna etkisi olmasın.

Bunu kontrol için IsNumeric fonksiyonunu kullanabiliriz. Kullanıcıya giriş için bir engel koymayacağız, eğer rakam girer ise biz o rakamı hemen silerek o tuşa basmamış gibi bir durum yaratacağız.Bunu yaparken giriş yapılan karakterin son karakter olmayabileceğini unutmayacağız.

Bir ayrıntı daha ; kullanıcı kopyala yapıştır yaparak da isim yazabilir. Yani aynı anda birkaç karakter girebilir

Bu sebeple ve başka sakıncaları sebebiyle her bir tuşa basıldığında basılan tuşu kontrol etmek iyi bir çözüm olmaz

Bütün bunların nihayetinde rakam dışında diğer karakterlerin girilmesine izin verdik. Şimdi bu kontrolü yapan birşeyler yazalım

 

 

 

Bu kodu her metin kutusunun Change olayına tekrardan yazmak yerine fonksiyona çevirelim

 

 

Eveet oldu. Bunun kullanımı da şöyle olacak;

 

 

Şimdi de sadece sayıya izin veren bir fonksiyon yazalım. Tamamen aynı yöntemle;

 

Kulanımı da gene aynı

 

 

Kaynak kod

Dizinin bir sonraki yazısında kısıtlamaları daha da arttıracağız ; E-posta, iban, telefon numarası gibi belli bir motifi olan veya uzunluğu belli bir değerdeki alanlara bakacağız.

Comments are closed.