Kullanıcıyı onay kutusunun işaretli olup olmadığı konusunda uyarmak için bir VBA Onay Kutusu Makrosu oluşturmak üzere aşağıdaki örneği ele alalım:

ActiveSheet fonksiyonunu kullanarak CheckBox.Add fonksiyonunu çağırarak VBA Onay Kutusu'nu oluşturabilir ve işaretleyebilirsiniz.


- VBA'daki onay kutuları, kullanıcıların ikili seçimler yapmasına veya evet/hayır kararlarını belirtmesine olanak sağlamak için kullanılan grafiksel öğelerdir.
- Onay Kutuları, Geliştirici sekmesi ve ActiveX Denetimleri kullanılarak Excel çalışma sayfalarına veya Kullanıcı Formlarına eklenebilir.
- Belirli hücrelere bağlanabilirler ve bağlantılı hücredeki durumlarını (işaretli veya işaretsiz) yansıtabilirler.
- Onay kutuları, kullanıcıların gereksinimlerine göre uygun seçimleri yapmalarını sağlayarak kullanıcı girdisini doğrulamak için kullanılabilir.
- Tıklama olayları gibi onay kutularıyla ilişkili olayları işleyip, durumlarına göre eylemler gerçekleştirmek için VBA kodu yazabilirsiniz.
UserForm'da VBA CheckBox Nasıl Oluşturulur?
Bir VBA Onay Kutusu örneğini düzgün bir şekilde kullanmak için aşağıdaki basit adımları izleyin.
Adım 1: Excel Çalışma Kitabını açtığınızda, başlık çubuğundan “Geliştirici” sekmesini seçin ve üzerine tıklayın.

Geliştirici simgesine tıkladıktan sonra “Visual Basic”i seçin. VBA Editör penceresini açar.

Bunun için VBA Editörünün başlık çubuğunda “Ekle” butonuna tıklayın ve “Kullanıcı Formu” seçeneğini seçin.

Adım 2: UserForm’un adını özelleştirin.


Adım 3: Kullanıcılardan cinsiyetlerini seçmelerini isteyen bir etiket ekleyin.

Yazı tipi boyutunu özelleştirmek için Yazı Tipi'ne tıklayın ve tercihinize göre özelleştirin.


Adım 4: Kullanıcıların kendilerinin kontrol edebilmesi için onay kutularını gösterecek iki etiket oluşturun.



Adım 5: Onay kutularına çift tıklayın ve VBA kodlarını gösterildiği gibi düzenleyin.

“Erkek” kutucuğunu işaretlemeniz durumunda geçerlidir.
Adım 6: Onay kutusunun değerinin doğru olup olmadığını kontrol etmek için bir If-ifadesi bildirin. Doğruysa, bu seçeneği seçtiklerini onaylayan bir mesaj kutusu gönderin ve kullanıcı formunu kapatın .

Adım 7: Aynı şekilde ikinci onay kutusunun da kadın olup olmadığını kontrol etmek için onay kutusuna çift tıklayın.

Adım 8: Benzer şekilde, VBA Onay Kutusu değerinin Doğru olup olmadığını kontrol etmek için bir If-ifadesi çağırın. Eğer öyleyse, “Kadın” seçeneğini onaylayan mesaj kutusu gösterilir.

Adım 9: Onay Kutusu kodundan sonra VBA'daki UserForm'u kapatın, böylece birden fazla seçenek seçilemez.

Kod:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
MsgBox “Sen bir adamsın!”, vbInformation
End If
Unload Me
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
MsgBox “Sen bir kadınsın!”, vbInformation
End If
Unload Me
End Sub
Adım 10: Excel VBA’daki etkinlik çubuğunda “F5” veya “Çalıştır” simgesine tıklayın.


Örnekler
VBA Onay Kutusu makrosunu Excel etkinliklerinize uygulayabileceğiniz farklı yolları görün.
Örnek 1 – ActiveX Onay Kutusu Denetimi Ekle
Bu örnekte, Excel'deki ActiveX denetimlerini kullanarak onay kutularının nasıl oluşturulacağını öğreneceksiniz.
Adım 1: Geliştirici sekmesinde, onay kutularını düzenlemek ve taşımak için Tasarım Modunu açın.
Adım 2: Ekle'nin altında, ActiveX denetimleri altında Onay Kutusu'nu seçin ve çalışma sayfasında istediğiniz yere çizin.

Sonuçta ortaya çıkan CheckBox şu şekilde gözükecektir.

Adım 3: “Tasarım Modu” simgesinin yanındaki Özellikler çubuğuna tıklayarak Onay Kutusunun adını özelleştirin.


Adım 4: Bu onay kutusunun işlevlerini düzenlemek için onay kutusuna sağ tıklayın ve “Kodu Görüntüle”yi seçin.

Adım 5: Bu alt rutini düzenlerken oluşacak koşulları düzenleyin.

Adım 6: VBA Onay Kutusu değeri doğruysa, kullanıcının kabul ettiğini doğrulayan bir mesaj kutusu gönderin. Bu, If-Else koşulu kullanılarak yapılır.

Adım 7: İşaretlenmemiş onay kutusu için bir Else kısmı tanımlayın.

Kod:
Public Sub Yes_Click()
If Yes.Value = True Then
MsgBox “Kullanıcı kabul ediyor!”, vbInformation
Else
MsgBox “Kullanıcı sizin fikrinizden farklı düşünüyor”, vbExclamation
End If
End Sub
Adım 8: Çalışma sayfasına gidin ve VBA Onay Kutusu Makrosunu düzenledikten sonra onay kutusuna tıklayın. Bir mesaj kutusu açılacaktır.


Örnek 2 – Onay Kutusunu Bir Hücreye Bağla
Bu örnekte, VBA Onay Kutusu değerlerini bir hücreye nasıl bağlayacağınızı ve çıktısını nasıl görüntüleyeceğinizi öğreneceksiniz.
Adım 1: “Geliştirici” sekmesi altında “Tasarım Modu”nu açın.
Adım 2: Ekle'yi seçin ve ActiveX denetimleri altında Onay Kutusu'nu seçip çizin.

Adım 3: VBA CheckBox sonuçlarını hücreye bağlamak için bir alt rutin tanımlayın.

Adım 4: Özellikler sekmesinde Onay Kutusunun adını değiştirin.

Adım 5: Onay Kutusunun kodunu görüntüleyin.

Not: Alt programı doldurmanıza gerek yok; boş bırakabilirsiniz.
Adım 6: VBA Onay Kutusu değerini başka bir hücreye tanımlamak için yeni bir alt prosedür oluşturun.

Adım 7: Değerin belirli bir hücrede yazdırılmasını istediğiniz sütun sayısını tanımlayın. Burada, soldan üç sütun uzakta olacak şekilde programlanmıştır.

Adım 8: Excel VBA'da With fonksiyonunu kullanarak , sonucun gösterileceği hücreyi tanımlamak için onay kutusunun linkedCell özelliğini kullanın .

Adım 9: VBA Offset fonksiyonunu kullanarak , daha önce sütunlar argümanında tanımlanan leftCol değişkenini TopLeftCell anahtar sözcüğüyle Offset fonksiyonuna koyun.

Daha sonra With fonksiyonunu sonlandırın.
Kod:
Sub LinkCheckBoxToCell()
Dim leftCol As Long
leftCol = 3
With Checkbox1
.linkedCell = _
.TopLeftCell.Offset(0, leftCol).Address
End With
End Sub
Adım 10: Alt rutini bir kez çalıştırın ve ardından çalışma sayfasına gidin ve onay kutusunu tıklayın.


Örnek 3 – Excel'de MsgBox ile Onay Kutusunun İşaretli Olup Olmadığını Kontrol Etme
Bu örnekte, VBA'da bir Mesaj Kutusu kullanarak Onay Kutusu kodundan nasıl onay alınacağını öğreneceksiniz .
Adım 1: “Tasarım Modu”nu açık tutun veya henüz açık değilse açın.
Adım 2: “Tasarım Modu”nun yanında “Ekle”yi seçin ve ardından ActiveX denetimlerinde “Onay Kutusu” seçeneğini belirleyin.

Adım 3: Onay kutusunun özelliklerini düzenleyin.


Adım 4: İşlevselliğini düzenlemek için onay kutusuna sağ tıklayın ve “Kodu Görüntüle”yi seçin.


Adım 5: Onay kutusu değeri True olduğunda bir mesaj yazdıran bir Mesaj Kutusu bildirin. vbInformation, Mesaj Kutusuna simgeler eklemek için kullanılan bir anahtar sözcüktür.

Adım 6: VBA Onay Kutusu değeri yanlış olduğunda bir Else koşulu bildirin. MsgBox işlevini kullanarak farklı bir mesaj yazdırmasını sağlayın.

Kod:
Public Sub CheckBox2_Click()
If CheckBox2.Value = True Then
MsgBox “Kontrol Edildi!”, vbInformation
Else
MsgBox “İşaretlenmemiş!”, vbExclamation
End If
End Sub
Adım 7: Çalışma sayfasına gidin ve “Geliştirici” bölümünde “Tasarım Modu”nu kapattıktan sonra Onay Kutusuna tıklayın.


Buradan, VBA Onay Kutusu makrosunu düzenleyerek onay kutularını işaretlemek için onayı başarıyla çıkardınız.
Örnek 4 – Onay Kutusunu Sil
Artık gereksinimlere göre onay kutularını nasıl oluşturacağınızı ve düzenleyeceğinizi bildiğinize göre, bir onay kutusunu nasıl sileceksiniz? Bir onay kutusunu nasıl sileceğinizi öğrenmek için aşağıdaki adımları takip edebilirsiniz.
Adım 1: “Geliştirici” bölümünün altında “Tasarım Modu” seçeneğini açın.
Adım 2: Silmek istediğiniz onay kutusunu seçerek adını alın.

Adım 3: Belirli bir onay kutusunu silmek için bir alt rutin oluşturun.

Adım 4: Bu onay kutusunun bulunduğu çalışma sayfasını seçin.

Adım 5: Silinecek onay kutusunu OLEObject olarak bildirin.

VBA'da OLEObject, Nesne Bağlama ve Gömme (OLE) nesnesini ifade eder. OLE, farklı uygulamalardan bilgi içerebilen nesneler oluşturmanıza olanak tanıyan bir teknolojidir.
Excel VBA bağlamında, bir OLEObject genellikle bir çalışma sayfasındaki gömülü bir nesneyi veya denetimi temsil eder, örneğin bir onay kutusu, komut düğmesi veya ActiveX denetimi. Bu gömülü nesneleri programatik olarak düzenlemenize ve onlarla etkileşime girmenize olanak tanır.
Adım 6: Sil fonksiyonunu kullanarak onay kutusunu silin.

Adım 7: Onay kutusunun silindiğini onaylayan bir mesaj kutusu yazdırın.

Kod:
Sub DeleteCheckbox()
Dim ws Worksheet
ws = ThisWorkbook.Sheets(“Sheet1”) olarak ayarlayın
Dim chkBox As OLEObject
Set chkBox = ws.OLEObjects("CheckBox3")
chkBox.Delete
MsgBox “CheckBox başarıyla silindi!”, vbExclamation
End Sub
Adım 8: Yukarıdaki alt rutini çalıştırın. Bu onay kutusunun başarıyla silindiğini göreceksiniz.


Dikkat Edilmesi Gereken Önemli Noktalar
- Kullanıcıların bir seçeneğin seçilip seçilmediğini belirtmeleri gereken ikili (doğru/yanlış) seçenekler için onay kutuları kullanın.
- Verilerin kolay gösterimi ve işlenmesi için hücrelere onay kutuları bağlayın.
- Benzer türden seçimler için uygulamanızın her yerinde onay kutularını tutarlı bir şekilde kullanın.
- Kullanıcı arayüzünüzü çok fazla onay kutusuyla aşırı doldurmaktan kaçının, çünkü bu kullanıcıları bunaltabilir.
- Önemli mantık veya doğrulama için yalnızca onay kutularının görsel durumuna güvenmeyin.
- Kullanıcıları şaşırtabileceğinden onay kutularını belirsiz veya tutarsız şekilde etiketlemekten kaçının.
