Anasayfa | Akademik Forum | Sizden Gelenler | Sipariş
Menü Açıklamaları
Sorular - Cevaplar
Makaleler
Makrolar
Yerleşik İşlevler
Animasyonlar
Yumurtalar
Fonksiyonlar
MTK Programlar
ExcelCE
Dosya İndir
Neler Yaptık?
İletişim
Makaleler
Veri Doğrulama (Data Validation) - 3  -  M. Temel Korkmaz
Veri Doğrulamanın VBA Yönü - 1

Buraya kadar olan bölümde konunun manuel işleyişi hakkında bilgiler verdik. Bundan sonraki bölümde ise konu hakkında VBA kodlamasını inceleyeceğiz. Konunun sonlarına doğru içerisinde "Veri Doğrulama"nında bulunduğu bir örnek bulacaksınız.

1. Öncelikle D1:D10 hücreleri arasına şehir isimlerinden oluşan verileri girin. (Şekil-7)

2. VBE (Visual Basic Editör) penceresini açın ve herhangi bir modüle aşağıdaki kodları girin.

Sub Veri_Dogrulama()
  With Range("A1:A20").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                        Operator:=xlBetween, Formula1:="=D1:D10"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = "Girdi İletisi Başlığı"
    .ErrorTitle = "Haya Uyarı Başlığı"
    .InputMessage = "Girdi İleti Metni"
    .ErrorMessage = "Hata Uyarısı"
    .ShowInput = True
    .ShowError = True
  End With
End Sub

3. Kodu çalıştırdığınızda A1:A20 hücreleri arasındaki Veri Doğrulama listesinin ve açılır kutusunun oluştuğunu denetleyin (Şekil-16 ve Şekil-17).

Öncelikle A1 hücresine bakın ve listedeki kayıtları sayın. Daha sonra A2 hücresindeki listeye göz atın. Ve diğerlerine tek tek bakın. Görmüş olduğunuz sonucu yorumlayın. Eğer tam bir yorum yapamadıysanız, aşağıdaki kod açıklamalarımızdan sonraki “YORUM” başlığını okuyunuz.





Şimdi kodlamadaki bazı İngilizce kelimelerin karşılığını ve kodun tam açıklamasını yapmaya çalışalım.

Validation : Doğrulama
Add : Ekle
Type : Tip
xlValidateList : LİSTE doğrulama seçeneği
Alert : Uyarı
AlertStyle : Uyarı Stili
xlValidAlertStop : DUR uyarı stili seçeneği
Operator : İşleç
xlBetween : ARASINDA İşleç seneği
IgnoreBlank : Boşluğu yoksay
InCellDropDown : Hücre içerisinde açılır kutu.
InputTitle : Girdi İleti başlığı
ErrorTitle : Hata Uyarı başlığı
InputMessage : Girdi ileti mesajı
ErrorMessage : Hata mesajı
ShowInput : Girdi İletisi göster
ShowError : Hata uyarısı göster

Şimdi kodlarımızın ne manaya geldiğini adım adım açıklayalım.

With Range("A1:A20").Validation
İlk satırımızdaki With ifadesinin ne manaya geldiğini iyi anlayabilmek için ortaöğretim yıllarındaki matematik bilgisine biraz ihtiyacımız var. İsterseniz bu bilgileri birlikte hatırlamaya çalışalım.

Ortak Çarpan Parantezi Nedir?
Bir denklemdeki argümanlardan aynı değere sahip olan çarpanları ortak bir paranteze almaktır. Aşağıdaki gibi bir denklemimizin olduğunu var sayalım.

Bu denklemde eşitliğin sağ tarafına baktığımızda “+” ve “–“ işleçlerinin arasında 3 adet argümanın olduğunu görüyoruz. Bu argümanlarda ortak olan “x” değişkeninin olduğu göze çarpıyor. Biz işlemi sadeleştirmek için eşitliğin sağ tarafını “x” ortak çarpan parantezine alırsak denklem aşağıdaki gibi olacaktır.

Görüldüğü gibi her argümanda ortak olan “x” değişkeni ortak çarpan olarak ayrılmıştır. Matematiğin Cebir kısmı ile biraz uğraşmış olanlar zaten ne demek istediğimizi çok iyi anlıyorlar. Biz unutan arkadaşlarımız için küçük bir hatırlatma yapmış olduk. Şimdi konumuza dönelim.

With ifadesinden sonra, aynı satırda gelen ifadeler de ortak değişken gibi değerlendirilebilir. End With ifadesine kadar arada kalan ve sadece “.” İle başlayan bütün komutlar aslında With ifadesinin bulunduğu satırdaki komutlara sahiptirler. Bu örneğimizde ortak olan değer Range("A1:A20").Validation ifadesidir. Eğer With satırını kullanmamış olsaydık kodlamamız aşağıdaki gibi olacaktı.

Sub Veri_Dogrulama()
  Range("A1:A20").Validation.Delete
  Range("A1:A20").Validation.Add Type:=xlValidateList, _
           AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=D1:D10"
  Range("A1:A20").Validation.IgnoreBlank = True
  Range("A1:A20").Validation.InCellDropdown = True
  Range("A1:A20").Validation.InputTitle = "Girdi İletisi Başlığı"
  Range("A1:A20").Validation.ErrorTitle = "Haya Uyarısı"
  Range("A1:A20").Validation.InputMessage = "Girdi İleti Metni"
  Range("A1:A20").Validation.ErrorMessage = "Hata Uyarısı"
  Range("A1:A20").Validation.ShowInput = True
  Range("A1:A20").Validation.ShowError = True
End Sub

Sizin de hemen fark ettiğiniz gibi gereksiz yere defalarca aynı verileri yazmış olduk. Oysa With deyimi ile ortak olan komutları sadeleştirebiliyoruz.

With Range("A1:A20").Validation
Bu satırı, “A1:A20 hücreleri arasında ki veri doğrulamaları…” şeklinde tercüme edebiliriz. Bundan sonraki kod açıklamalarımızda bu ifadeleri hep en başta kullanacağız.

.Delete
“A1:A20 hücreleri arasında bulunan veri doğrulamalarını SİL.” Bu silme işlemini yapmamızın sebebi şudur. Belki daha önce bu hücrelere "Veri Doğrulama" işlemi uygulanmış olabilir. Herhangi bir hataya maruz kalmamak için bu doğrulamaları silme işlemini gerçekleştiren bir komut satırı.

.Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=D1:D10"
.Add ifadesi ile anlatılmak istenen şudur; “A1:A20 hücreleri arasına veri doğrulama ekle.” Ancak eklenecek olan bu doğrulamaya ait bazı argümanlar vardır. Bunlardan bir tanesi Type argümanıdır. Eklenecek olan veri doğrulama tipini belirtir. Bu kod satırında istenen doğrulama tip “LİSTE”dir. Bu Veri Doğrulama penceresinde, Ayarlar sayfa sekmesinde bulunan İzin Verilen listesindeki Liste seçeneğidir.

İzin Verilen kategorisinde 8 adet seçenek bulunmaktadır.

xlValidateCustom : Özel
xlValidateDate : Tarih
xlValidateDecimal : Ondalık
xlValidateInputOnly : Herhangi bir değer
xlValidateList : Liste
xlValidateTextLength : Metin uzunluğu
xlValidateTime : Saat
xlValidateWholeNumber : Tüm Sayı

Add komutunun ikinci argümanı ise AlertStyle’dir. Bu argümana bizim örneğimizde, "Veri Doğrulama" penceresinde “Hata Uyarısı” sayfa sekmesine bulunan “Stil” kategorisindeki “DUR” seçeneği atanmıştır.

“Stil” kategorisinde 3 adet seçenek bulunmaktadır.

xlValidAlertInformation : Bilgi
xlValidAlertStop : Dur
xlValidAlertWarning :Uyarı

Add komutuna ait üçüncü argüman ise Operator’dür. "Veri Doğrulama" penceresinde “Ayarlar” sayfa sekmesindeki “Veri” kategorisinde bulunan “Arasında” seçeneğidir.

“Veri” kategorisinde 8 adet seçenek bulunmaktadır.

xlBetween : Arasında
xlEqual : Eşit
xlGreater : Büyük
xlGreaterEqual : Büyük ya da Eşit
xlLess : Küçük
xlLessEqual : Küçük ya da Eşit
xlNotBetween : Arasında değil
xlNotEqual : Eşit değil

Ancak burada sizin de hemen dikkatinizi çeken “Veri” kategorisinde bulunan seçeneklerin aktif olmamasıdır. Bunu isterseniz birlikte yorumlayalım.

Operatorun Aktif Olmaması Hakkında Kısa Bir Yorum.
Biliyorsunuz ki, "Veri Doğrulama" sadece “Liste” yöntemini içermemektedir. Bunu makalemizin birinci bölümünde anlatmıştık. Şekil-18’e tekrar baktığınızda diğer seçenekleri de göreceksiniz. Bu seçeneklerin karşılıklarını yukarıda açıkladık.



Eğer makro kaydederken ya da yazarken komutlara ait bütün argümanları kullanırsanız, hata olmaması için bu argümanların karşılıklarını da yazmalısınız. hazırladığımız kodda biz Liste yöntemini kullandığımız için “Veri” kategorisinden herhangi bir seçeneğe ihtiyaç duyulmamıştır. Ancak xlBetween (arasında) seçeneği varsayılan olarak gelmektedir. Eğer “Liste” değil de “Tüm sayılar” seçeneğini kullanmış olsaydık o zaman “Veri” kategorisindeki seçenekler de aktif olacaktı. Kod satırını aşağıdaki gibi değiştirdiğimizde Makromuzun sorunsuz çalıştığına şahit olacaksınız.



<< Veri Doğrulama Makale 3/4 >>

Destek
M.ÖZTÜRK - Y.KARAMAN
Bu siteyi, "Hayatını çocuklarının Ahlâklı ve Dürüst yetişmesi için harcamış olan Cefakar ve Fedakar, Canım ANNEM'e adadım."
Copyright © 1998-2011 M. Temel Korkmaz - Tüm hakları saklıdır.