KULLANICI VERİ GİRİŞ PENCERESİ
&
INPUTBOX

1- InputBox ve Optional Parameters

    Sahip olduğumuz sosyal medya, banka veya herhangi bir hesaba giriş yaparken, bazı kutulara kullanıcı adımızı, yanında yada altında olan diğer kutuya ise şifremizi gireriz. Burada yaptığımız şey, bize ait olan bir ekrana ulaşabilmek amacıyla bilgisayarın bizi tanıyabilmesi için önceden tanımlı anahtar niteliğindeki veriyi bilgisayara girmektir. Her programda birbirinden biraz farklı da olsa veri girişi yapabileceğimiz küçük kutular bulunur veya programı oluşturan kişi tarafından bu kutular oluşturulur. Excel VBA’deki bu kutuların adı ise InputBox’tır. En basit şekliyle veri giriş kutusu veya excelde pencere olarak açıldığı için veri giriş penceresi olarak da çevirebiliriz. Ders 7’nin konusu olan mesaj kutularıyla hem görüntü hem ‘Optional Parametres’ itibariyle çok büyük benzerlikleri vardır. InputBox yani veri giriş penceresi sayesinde istediğimiz verileri excele girebilir, bir değişkene atayabilir, koşullu durumlar oluşturarak, bir çok farklı uygulama gerçekleştirebiliriz. 

 

Şimdi bir InputBox penceresini ve Optional Parametres’i görsel üzerinde görelim. Veri Giriş 

Veri Giriş Penceresi InputBox Örnek 1 Aynı mesaj kutusu(MsgBox) gibi sadece InputBox yazarak, veri giriş penceremizi tanımlamış oluyoruz. Ancak sonrasında, mecburi parametremiz ‘Prompt’ için bir değer girmek zorundayız. Bu haliyle inputbox çaışacakır. İsteğe bağlı olarak diğer parametreleri girmek de tamamen size kalmış. Ama ben ‘title’ ve ‘default’ parametrelerini her zaman girmenizi tavsiye ediyorum.

 

    Bu örnekte ‘Prompt’, ‘Title’ ve ‘Default’ optional parametreleri girildiğinde Veri Giriş Kutusu’nda oynadıkları rol çok net anlaşılabiliyor. 

Veri Giriş Penceresi InputBox Örnek 2

     Örnekte, altı mavi ile çizilmiş olan mecburi parametre olan ‘Prompt’, yani InputBox’ın kısaca amacını anlatan kısım, kırmızı renk ile gösterilen ‘Title’ InputBox’ın başlığı,  yeşil ile gösterilen ‘Default’ ise kullanıcının veri girişi yapacağı alanda, kullanıcıya ip ucu verme amaçlı, yol gösterici olarak verilen ikinci bir mesajdır. Şimdi InputBox’a girdiğimiz veri ile yapabileceklerimize bir göz atalım.

 

2- InputBox Ile Hücrelere Değer Atama

    InputBox’a kullanıcı tarafından girilen her türlü veriyi istediğimiz bir hücrenin değeri olarak atayabiliriz. Derslere ilk başladığımızda, Marka ve Modeline Göre Otomobil Fiyatları’ tablomuza veri eklerken direk olarak hücreyi belirtip karşılığına ise elle veri yazmıştık. Şimdi bu işlemi InputBox kullanarak tekrar yapalım. İlk önce tablomuzu bir hatırlayalım.

Veri Giriş Penceresi InputBox Örnek 3

    Bu tabloda gördüğünüz gibi bir araba markası ve devamında da bu markanın modeli, donanımı gibi birçok özelliği var. Ders 4 Hücre ve Alan Yönetimi isimli dersimizde tek tek VBA Editor’e kod yazarak yeni bir arabaya ait özellik girmiştik. Burada ise aynı işlemi InputBox ile ve hatta worksheet üzerinde koyduğumuz bir tuşla çalışan bir makro yardımıyla yeni bir arabayı listemize ekleyeceğiz. Şimdi ilk olarak yazdığımız koda bir göz atalım. Hatta ilk önce tek bir satır üzerinde detaylı bir inceleme gerçekleştirelim.

Veri Giriş Penceresi InputBox Örnek 4

    1- İlk iş olarak kendimize  bir mesnet noktası seçiyoruz. Bu ilk satırda yaptığımız işlem tam olarak bu. Sıra No sütunun en alt hücresine gidip Offset metodu ile bir alt hücreyi kendimize “ActiveCell” olarak yani etkin hücre olarak belirtiyoruz, seçiyoruz.

      2-Etkin hücremiz bir sıra no belirttiği için sıra numarasını otomatik olarak aldırıyoruz. Burada etkin hücremizin değerini, bir üstteki hücrenin bir fazlası olacak şekilde ayarladık. 

NOT: Eğer bir üst hücrede bir rakam tipinde toplama işlemi gerçekleştirilebilecek tipte bir veri olmazsa program hata verecektir. 

     3-Seçtiğimiz etkin hücrenin bir yanının değeri olarak da subroutine’imizin 3. satırında yazdığımız, InputBox’tan gelen veri gelecektir.

 

Şimdi ‘Marka ve Modeline Göre Otomobil Fiyatları’ tablomuza yeni bir otomobil eklemek için yazdığımız Subroutine’i inceleyelim.

    Yukarıdaki subroutinei çalıştırdığımız zaman, her bir değer için tek tek InputBox açılacak ve sizin veri girmenizi isteyecektir. Eğer değer girmezseniz ve InputBox’ı çarpı ile veya cancel ile kapatırsanız, o hücre boş bırakılıp bir sonraki hücre için yeni InputBox açılacaktır. Eğer yine değer girmez ve ‘OK’ tuşu ile InputBox’ı kapatırsanız, default olarak gözüken değer hücreye atanacaktır. Bu bakımdan ‘Default’ ‘optional Argument’i girmeniz, kullanıcı ve makroyu yazan kişi için çok büyük fayda sağlayacaktır. 

 

3- Excel Worksheet'e Eklediğimiz Bir Tuş Yardımıyla Makroyu Çalıştırmak

    Hazırlamış olduğumuz makrolarımızı VBA Editor üzerinden, excel şeritte yer alan ‘Developer TAB’ üzerinden ve de worksheet üzerine ekleyebileceğimiz resim, şekil, çizim v.b. her türlü araç yardımıyla çalıştırabiliriz. Dersimizin şimdiye kadar işlediğimiz bölümlerinde şekiller, resim ve çizimler dışındaki diğer yolların yardımıyla makrolarımızı çalıştırmayı öğrendik. Bu bölümde ise worksheet üzerine eklediğimiz bir görsel yardımıyla makromuzu çalıştırmayı göreceğiz. İşlem aslı itibariyle çok basit ancak çok kullanışlı. Ayrıca da daha önceden makroları hiç tecrübe etmemiş kişiler tarafından da bir makroyu kullanmanın veya kullandırmanın en etkili yolu. Ayrıca tuşlar ile idare edilebilen bir arayüz, makronuzun daha profesyonel görünmesine de katkı sağlayacaktır. Şimdi adım adım bu işlemi görseller yardımıyla inceleyelim.

İlk olarak tuş olarak kullanmak istediğimiz aracı worksheet üzerine ekliyoruz. Bahsettiğimiz gibi herşeyi bir tuş olarak kullanabilirsiniz. Biz örneğimizde gülen surat şeklini tuş olarak kullanmak üzere seçtik ve tablomuzun yanına konumlandırdık. Sonrasında ise altına tuşa bastığımız zaman yapacağı işlemi yani komutu yazdık. 

Şimdiye kadar yaptığımız işler:

*Insert Tab

*Shapes

*Smiley Face

*Worksheet üzerinde bit yer belirledik ve şekli yerleştirdik.

*İsmini altına yazdık.

*Şekli boyutlandırdık.

 

Bu şekilde tuş olarak kullanmak üzere worksheet üzerine eklediğimiz ‘Gülen Surat’ı tablomuzun yanında görebilirsiniz. Ancak bahsettiğim gibi siz istediğiniz şekli veya resmi tercih edebilirsiniz.

  Artık tablomuzun yanında bir adet gülen surat şeklimiz var. Şimdi sıra bu şekle, tetiklemesini istediğimiz makroyu atamakta. 

    İlk olarak eklemiş olduğumuz şeklimizin üzerine sağ tıklıyoruz ve seçeneklerden ‘Assign Macro’ yani makro ekle seçeneğine tıklıyoruz. 

 

‘Assign Macro’ seçeneğini tıkladıktan sonra o an açık olan bütün workbook’larda yer alan ‘Subroutine’ leri gösteren bir pencere açılır. Bu seçenekler içerisinde biz de ‘KullanıcıdanVeriAlmak’ isimli Subroutine(makroyu) seçip ok diyerek bu makroyu, ‘gülen Surat’ şekline atamış olduk. 

Artık güzel surata her tıkladığımızda yazmış olduğumuz makro çalışacak ve bizden tabloya girmek istediğimiz yeni otomobile ait verileri, InputBox yardımıyla isteyecektir.

 

 

4- InputBox Kullanarak Değişkenlere Değer Tanımlamak



    Bir üst konuda hücrelere nasıl değer atanabileceğini gördük. Bu bölümde ise tanımlamış olduğumuz değişkenlere InputBox kullanarak değer atamayı göreceğiz. Yine görsel üzerinden adım adım bu işlemin yapılışını hep beraber inceleyelim. 

Şekilde InputBox yardımıyla yapılan bir toplama işlemine ait Subroutine görüyorsunuz.

 

1-Subroutine’e başlar başlamaz workbook ve worksheet’i seçiyoruz veya diğre bir deyişle etkinleştiriyoruz.(.Select veya .Activate)

2- Toplama işlemimiz için 3 farklı değişken tanımlıyoruz. Bunlar toplayacağımız sayılar olan Sayı_1, Sayı_2 ve bu iki sayının toplamını ifade edecek olan Toplam değişkeni. Her birini de bu işleme özgü olarak ‘Integer’ değişken tipi olarak tanımlıyoruz.

3-InputBox’a girdiğimiz değerin Sayı_1 ve Sayı_2 ye atanması için bu kodları yazıyoruz.

4-Sayı_1 ve Sayı_2’nin toplamlarını, ‘Toplam’ değişkenine atıyoruz.

5- Yaptığımız işlemi MsgBox ile ekrana yazdırıyoruz.

ONEMLI NOT: InputBox girilen değerleri String olarak dışa aktarır. Yani biz InputBox’a ne değer verirsek verelim ilk aşamada InputBox bu değerleri String veri tipine dönüştürecektir. Ancak eğer yazdığımız şey açık bir şekilde rakam veya tarih gibi bir veri tipiyse, o zaman VBA bizim string değil de başka bir tür veri girdiğimizi anlayıp, InputBox’tan çıkan verinin de aynı doğrultuda değiştirilmesini sağlar. Bu sayede biz burada InputBox’a girdiğimiz verileri toplyabiliyoruz. Çünkü girilen değer tamamen tam sayı sınıflanrmasında ve VBA bunu anlayarak çıktı veri tipini ‘Integer’ olarak düzenliyor. Şimdi de sırayla açılan InputBox ve MsgBox’ları görelim.

    İlk InputBox bize toplama işleminin ilk sayısını soruyor ve biz buraya 5 rakamını giriyoruz.

    İkinci açılan InputBox’a da toplama işleminin ikinci sayısını girmemiz istenioyr ve biz de 7 rakamını giriyoruz.

    Toplama işleminde girilen sayıları ve toplamı, Msgbox’ta görüyoruz.

    Daha önceden ‘default’ değerin önemli bir ‘optional argument’ olduğundan bahsetmiştik. Burada da InputBox’larda gördüğümüz üzere default yerine toplama işleminde etkisiz eleman olan ‘0’ sıfır kullandık. 

Eğer bu default değerini boş bıraksaydık o zaman InputBox dışarı veri çıkartırken Integer Type çıkartmak yerine String Type veri dışarı çıkartacaktı. Bu durumda da bir String veri tipi toplanamayan bir değer olduğundan ötürü yazdığımız macro hata verecekti. 

    Biz açılan InputBox’lara değer girmeden ok tuşuna veya Enter tuşuna basarak kapattığımızda da bu aşağıda gördüğünüz MsgBox açılacaktır. 

    InputBox’lar ile kullanıcıdan veri almak ve bir değişkene atamak konusunda örnekler isteğe bağlı olarak çoğaltılabilir. Hatta eğer yanlış tip veriler girildiyse, kullanıcıdan tekrar veri girmesi istenebilir. Orneklerle bu bahsettiğimiz işlemleri inceleyeceğiz. 

 

 

 

 

5- InputBox Fonksiyonunun Eksiklikleri

    1- Girilen verileri sadece string olarak dışa aktarması

        Üstte örnekte de bahsettiğim gibi InputBox sadece string olarak dışa veri aktarır. Ancak sonrasında girdiğimiz veriyi belirli bir formatta girmişsek, VBA bizim için dışa aktarılan formatı bizim girdiğimiz veri tipi formatına dönüştürür. Özellikle gireceğimiz veriyi bir değişkene atayacaksak ve InputBox’tan çıkan veri ile tanımladığımız veri tipi uyuşmazsa ‘Type Mismatch’ hatası ile karşılaşırız. Aynı şekilde eğer girdiğmiz verileri bazı işlemlerde kullanacaksak farklı hata tipleri ile karşılaşmamız gayet muhtemeldir.

    2- InputBox fonksiyonuna değer girebilmek için elle yazmak zorunda olmamız. 

     Bunu sizde farketmişsinizdir ve benim tahminim hiç de yadırgamamışsınızdır. Sonuç olarak adı üstünde veri giriş penceresi. Şimdi sizden farklı bir şekilde düşünmenizi istiyorum. Mesela otomobil fiyatları sütununa bir fiyat gireceksiniz. InputBox kullanırken elle girmek yerine o sütunda aynı fiyatta başka bir otomobil olduğunu bilseniz ve sadece o hücreye dokunarak, otomobil fiyatını tıkladığınız hücrenin değeri olarak seçebilseniz, sizce de işlem biraz daha kısalmaz mıydı? Aynı işlemi motor hacmi, vites ve yakıt seçimi için yapsanız,  listenize  tek bir otomobili dahi girerken bakın, ne kadar da kolaylaştı işleminiz.

Bir sonraki dersimizde daha kapsamlı olan Appliciation.InputBox konusunu işleyeceğiz. 

Dünya Çapında Araştırmacılara Ait Çalışmaları Okumak İsterseniz https://www.researchgate.net/profile/Ender_Dagdelen adresini Ziyaret Edebilirsiniz. Ana Sayfaya Dönmek İsterseniz De Aşağıdaki Tuşu Tıklayınız.

Herkese İyi Çalışmalar…

Soru ve Önerileriniz İçin;

[email protected]