
- VBA Giriş Kutusu bir açılır penceredir ve kullanıcılardan girdi almak için kullanılır.
- VBA Giriş Kutusu tipleri, veri doğrulama seçeneklerine sahip Genel Giriş Kutusu ve Uygulama.Giriş Kutusu'dur.
- Application.Input kutusunda çeşitli veri doğrulama tekniklerinin bulunduğunu unutmayın.
- Ayrıca, tip argüman değerini 8 olarak vererek kullanıcının giriş değerini sadece hücre referansından veya hücre aralığından seçmesini kısıtlayabiliriz.
- Değişken sadece atanan veri tipindeki değeri tutabilir.
VBA Giriş Kutusunun Sözdizimi
VBA Input Box'ın sözdizimi iki şekilde gelir.
Birincisi şu şekildedir:
INPUT(Prompt, [Title], [Default], [XPos], [YPos], [HelpFile], [Context])
İstem(PROMPT): Zorunlu bir argümandır. Kullanıcıya Giriş Kutusuna girmesi gereken veri türü hakkında bilgi verebiliriz.
[Başlık](TİTLE): Bu argümanda giriş kutusu için bir başlık verebiliriz. Bu isteğe bağlı bir argümandır ve bu nedenle bunu yoksayarsak, giriş kutusunun başlığı olarak uygulama adını alırız, yani Microsoft Excel.
[Varsayılan](DEFAULT): Giriş kutusunun giriş alanında, gereksinime göre varsayılan değeri gösterebiliriz.
[XPos]: Bu isteğe bağlı bir argümandır. Bu argümanda, giriş kutusunun koordinatını X eksenine yerleştirecek bir sayı gireceğiz.
[YPos]: Bu isteğe bağlı bir argümandır. Bu argümanda, giriş kutusunun koordinatını Y eksenine yerleştirecek bir sayı gireceğiz.
[HelpFile]: Bu argümanda, giriş kutusuyla kullanılacak yardım dosyasının konumunu vereceğiz. Bu isteğe bağlı bir argümandır ancak [Context] argümanını kullanırsak zorunlu hale gelir.
[Bağlam]: Bu argüman, yardım dosyasıyla ilişkili bağlam kimlik numarasını içerir. İsteğe bağlı bir argümandır ancak [YardımDosyası] argümanını kullanırsak zorunlu hale gelir.
Aşağıdaki görselde VBA'daki tipik giriş kutusu gösterilmektedir.

Şimdiye kadar gördüğümüz giriş kutusunun sözdizimi, sınırlı özelliklere sahip temel olanıdır. Excel'de veri doğrulamasını kontrol etmenin gelişmiş özelliklerini elde etmek için “Application.InputBox” işlevini kullanmamız gerekir.

Sözdizimi, önceki bölümde gördüğümüz genel giriş kutusuyla aynıdır. Application.InputBox'ı kullandığımızda elde ettiğimiz ek özellik Type argümanıdır.
[Tür]: Bu, veri doğrulamasını yapmamıza olanak tanır. Bu arada, bu isteğe bağlı bir argümandır.
Örneğin, kullanıcının yalnızca Excel'deki hücre referansından değer girmesini istiyorsak , bu doğrulamayı devreye sokabiliriz. Bu, tüm geliştiriciler için bir cankurtarandır çünkü bir geliştirici olarak, veri doğrulamasını yapmak için birden fazla satır kod yazmamıza gerek yoktur.
İhtiyaca göre aşağıdaki sayısal değerler girilebilir.
- 0 – Sadece formül girilebilir.
- 1 – Sadece rakam girilebilir.
- 2 – Sadece metin dizisi girilebilir.
- 4 – Sadece mantıksal bir değer girilebilir, TRUE veya FALSE
- 8 – Giriş olarak yalnızca hücre referansı verilebilir.
- 16 – Sadece #N/A gibi bir hata girilebilir.
- 64 – Bir dizi değer girilebilir.
Yukarıdaki veri doğrulamaları yapıldıktan sonra, kullanıcılar hala herhangi bir veriyi girebilir. Ancak, giriş kutusu, kullanıcı OK'e tıkladıktan sonra veri doğrulamasını yapar ve girilen veri, girilen doğrulamaya uygun değilse daha fazla ilerlemesine izin vermez.
Değişkenli VBA Giriş Kutusu
Giriş Kutusu ile çalışmanın en iyi yolu bir değişken kullanmaktır. Şimdi, VBA giriş kutusu kullanarak bazı örnekler görelim.
Örnek 1 – Giriş Kutusu Olan Dize Değişkeni
İlk giriş kutumuzu oluşturmak için burada listelenen adımları izleyin.
Adım 1: İlk olarak ALT + F11 kısayol tuşlarına basarak Visual Basic Editor penceresini seçin .
Adım 2: Ardından Ekle sekmesine gidin ve Modül'e tıklayın .

Adım 3: Şimdi, bu modülü ekleyecek ve ardından ona bir isim vererek alt prosedürü başlatacaktır.

Adım 4: Daha sonra giriş fonksiyonunu girin (parantezleri açmayın).

Adım 5: Sonra, giriş kutusunun istem argümanı için, kullanıcıya ne girmesi gerektiği hakkında bir mesaj vermemiz gerekir. Örneğin, kullanıcı adları topladığımızı varsayalım; o zaman, Adınız nedir? gibi bir soru verebiliriz .

Adım 6: Benzer şekilde, giriş kutusunun Başlık argümanı için , bağlama uygun bir başlık vermemiz gerekiyor. Şimdi, bu durumda, bu Kullanıcı Adı Koleksiyonu olacak .

Adım 7: Sonra kullanıcıya varsayılan mesaj olarak " Adınız buraya gir" gibi bir isim verin .

Şimdi Çalıştır butonuna tıklayarak veya F5 kısayol tuşuna basarak makroyu çalıştırabilirsiniz.

Bu arada bu butonu çalıştırdığımızda karşımıza aşağıdaki girdi kutusu penceresi gelecektir.

Gördüğümüz gibi varsayılan mesajı seçmiş. Bu yüzden girmek için backspace veya delete tuşuna basmamız gerekiyor.

Şimdi giriş alanına isminizi girin.

Daha sonra Tamam'a tıklayın , giriş kutusu kaybolacaktır.
Ancak giriş kutusundan alınan girdiyi saklamak için, tutabileceği veri türünü belirten bir değişken tanımlamamız gerekir.
İsimleri topladığımız için string veri türünü aşağıdaki gibi atayabiliriz .

Şimdi bu değişken adını eşittir (=) işaretiyle birlikte girin ve giriş kutusunu eşittir işaretinden sonra yerleştirin.

Fakat tüm metin veya kod kırmızı renkte olduğu için bir hata alıyoruz.
Bunun sebebi, giriş kutusu tarafından verilen bir değeri atadığımızda giriş kutusu fonksiyonunu parantezleri kapalı olarak girmemiz gerekmesidir.

Açıkça, parantezin normal işlevleri olduğunu görebiliriz.
Şimdi değişken değerini aşağıdaki görseldeki gibi mesaj kutusunda gösterelim.

Daha sonra kodu çalıştırdığımızda aşağıdaki girdi kutusunu elde edeceğiz.

Daha sonra gerekli ismi giriniz.

Şimdi Tamam'a tıklayın ve giriş kutusuna girilen değeri gösteren bir mesaj kutusu açılacaktır.

Şimdi, bir yerde gösterilecek çıktıyı aldık. Bu yüzden, girdi kutusuna girilen değeri depolamak için aşağıdaki kodu kullanın.
Sub Input_Box_Example1()
Dim N As String
N = InputBox(“Adınız ne?”, “User Name Collection”, “Buraya adınızı girin”)
Range(“A1”).Value = N
End Sub
Bu, giriş kutusuna girilen değeri A1 hücresinde saklayacaktır.
Örnek 2 – Giriş Kutusu Olan Sayı Değişkeni
Kullanıcının sadece sayısal değer girmesini istiyorsak, sayısal verileri tutabilecek bir veri türü atamamız gerekir.
Farklı sayısal veri türleri mevcuttur. Bunlar:
- Byte – 0 ile 255 arasında değer tutabilir.
- Integer – -32768 ile 32768 arasındaki sayıları tutabilir.
- Long – -2.147.483.648 ile 2.147.483.648 arasındaki sayıları tutabilir
- Single – Negatif değerler için -3.402823E+38 ile -1.401298E-45 arasındaki sayıları, pozitif değerler için 1.401298E-45 ile 3.402823E+38 arasındaki sayıları tutabilir.
Örneğin, kullanıcıların yaş verilerini topluyorsak, 0'dan 255'e kadar değerleri tutabildiği için Byte veri tipini kullanmamız gerekir.

Daha sonra giriş kutusunu aşağıdaki gibi tasarlayarak giriş kutusunun değerini atayın.
Sub Input_Box_Example2()
Dim N As Byte
Age = InputBox(“Yaşınız kaç?”, “Yaş Verisi”, “Yaşınızı buraya girin”)
Range(“A1”).Value = Age
End Sub
Şimdi bu kodu çalıştırdığımızda aşağıdaki girdi kutusunu alacağız.

Daha sonra 0 ile 255 arasında bir yaş girin.

Şimdi Tamam'a tıklayalım ve A1 hücresine girdiğimiz değeri alalım.

Şimdi yaş rakamını 0 ile 255 aralığında olmayan bir değerde girdiğimizi varsayalım.
Ardından Tamam'a tıklayın

Şimdi aşağıdaki hata mesajını alacağız.

Girdiğimiz sayının, atadığımız veri tipinin kapasitesinin üzerinde olması nedeniyle hatanın Overflow olduğunu açıkça görebiliyoruz .
Şimdi bu hataları düzeltmek için Application.InputBox metodu şeklinde veri doğrulama tekniğini kullanmamız gerekiyor .
Kullanıcıdan Gelen Girişin Doğrulanması
VBA Input Box'ı Application metoduyla kullandığımızda daha fazla verim alırız. Bu metodu kullandığımızda aşağıdaki sözdizimini elde ederiz.

Söz dizimi genel giriş kutusuyla aynı görünüyor, ancak sonunda Type adında ekstra bir söz dizimimiz var.
Type argümanını kullanarak kullanıcı girişini kısıtlayacağız. Şimdi, aşağıdaki bölümde tüm doğrulama kodu tiplerini göreceğiz.
1 – Sadece Sayısal Değer
Şimdi, kullanıcıya sadece rakam girmesine izin vermek istediğimizi varsayalım, o zaman aşağıdaki kod gibi tipi 1'e eşitleyebiliriz.
Sub Input_Box_Example2()
Dim Age As Byte
Age = InputBox(“Yaşınız kaç?”, “Yaş Verisi”, “Yaşınızı buraya girin”)
Range(“A1”).Value = Age
End Sub
Bu kod sayılardan başka herhangi bir girdi değeri almayacaktır. Örneğin, bunu çalıştırdığımızda sayı dışında bir değer girmiş oluruz.

Daha sonra hata mesajını görmek için Tamam'a tıklayın .

Görüldüğü gibi hata mesajında Sayı geçerli değil yazıyor , yani giriş kutusuna girilen değer bir sayı değil.
#2 – Yalnızca Mantıksal Değerler (DOĞRU veya YANLIŞ)
Benzer şekilde, kullanıcıların sadece mantıksal değer girmesini istiyorsak, tip argümanını 4 olarak ayarlayabiliriz.
Alt Input_Box_Example4()
Dim Question As String
Question = Application.InputBox(Prompt:=”Yarın geliyor musun?”, Başlık:=”Kişisel Veri Toplama”, Tür:=4)
Range(“A1”).Value = Question
End Sub
Şimdi mantıksal değerin dışında bir değeri girdi kutusuna girelim.

Daha sonra Tamam'a tıkladığımızda aşağıdaki hatayı alacağız.

TRUE veya FALSE dışında bir değer girdiğimizden, Mantıksal değer geçerli değil hata mesajını alıyoruz . Bu nedenle, yalnızca TRUE veya FALSE girmemiz gerekiyor.
3 – Yalnızca Hücre Referansları
Kullanıcıların giriş değeri olarak sadece hücre referansını seçmesini istiyorsanız, o zaman tür argümanını 8 olarak ayarlamamız gerekir.
Kod:
Sub Input_Box_Example5()
Dim Price As Long
Price = Application.InputBox(Prompt:=”What is the SP Value?”, Title:=”Product Selling Price”, Type:=8)
Range(“A1”).Value = Price
End Sub
Unutmayın, yukarıdaki kod kullanıcının giriş değerini yalnızca hücre referansı biçiminde seçmesine izin verecektir. Bu nedenle, hücre referansı dışında bir giriş değeri girersek, aşağıdaki hata mesajını alırız.


Referansın geçerli olmadığı söyleniyor.
Şimdi ya hücreyi seçebiliriz ya da doğrudan hücre adresini girebiliriz.