VBA Close UserForm'un kullanımını incelemek için bir örneğe bakalım. Kullanıcıdan adını girmesini isteyen basit bir UserForm'dur.

Bir butona tıklandığında, UserForm bize istediğimiz ismi girme olanağı sunacak ve girilen isim kullanılarak kişiselleştirilmiş bir karşılama mesajı oluşturulacaktır.



Burada Rahul ismini girip komut butonuna tıkladığımızda “Merhaba, Rahul!” yazısını gösteren bir mesaj kutusu görebiliriz.
ÖNEMLİ NOKTALAR
- Excel'de VBA Close UserForm'u kapatmak, amacına ulaştıktan sonra UserForm'u sonlandırmak veya gizlemek anlamına gelir.
- “Unload Me” ifadesi UserForm’u bellekten kaldırırken, “Hide” metodu onu görünmez yapar ancak bellekte tutar.
- Unload, UserForm'u sonlandırır, denetimleri ve değişkenleri sıfırlar ve yeniden erişmek için yeniden yüklemeyi gerektirir
- .
- Birden fazla “Kullanıcı Formu”, Kullanıcı Formu adını belirtmeyi veya “Ben” anahtar sözcüğünü kullanmayı gerektirebilir.
- UserForm'u kapatmadan önce ek görevler gerçekleştirmek için Terminate olayını kullanın.
Excel VBA'da UserForm Nasıl Kapatılır?
VBA Close UserForm'u kapatmak için istenen davranışa bağlı olarak birden fazla seçeneğiniz var. İşte üç yaygın yöntem:
- Yöntem 1: Unload Me
“Unload Me” ifadesi UserForm'u kapatır ve bellekten kaldırır. Bu yöntem UserForm'u tamamen boşaltır ve kaynaklarını serbest bırakır.
Örnek:
Public Sub CloseButton_Click()
Unload Me
End Sub
Bu örnekte, CloseButton, VBA Close UserForm'daki bir CommandButton denetimidir. “CloseButton_Click” olay işleyicisi, düğmeye tıklandığında tetiklenir ve VBA Close UserForm, “Unload Me” kullanılarak boşaltılır.
- Yöntem 2: Me.Hide
“Me.Hide” ifadesi, VBA Close UserForm'u bellekte tutarken gizlemek için kullanılır. Bu yöntem, durumunu veya verilerini kaybetmeden VBA Close UserForm'u tekrar göstermenize olanak tanır.
Örnek:
Public Sub CloseButton_Click()
Me.Hide
End Sub
Bu örnekte yine butona tıklandığında “CloseButton_Click” olay işleyicisi tetikleniyor ve “Me.Hide” kullanılarak VBA Close UserForm gizleniyor.
- Yöntem 3: Me.Visible = False
“Me.Visible = False” ifadesi, VBA Close UserForm'u bellekte tutarken gizlemenin başka bir yoludur. “Me.Hide” yöntemine benzer şekilde çalışır.
Örnek:
Public Sub CloseButton_Click()
Me.Visible = False
End Sub
Butona tıklandığında “CloseButton_Click” olay işleyicisi tetiklenir ve “Me.Visible = False” kullanılarak VBA Close UserForm görünmez hale getirilir.
Örnekler
Örnek 1 – VBA'da “Unload Me” İfadesini Kullanarak Userform'u Kapatma
Bu örnek, girilen verilerle çalışma sayfasını güncellerken “Unload Me” ifadesi kullanılarak tıklandıktan sonra bir VBA Close UserForm’un nasıl kapatılacağını göstermektedir.
- Adım 1: Alt+F11 tuşlarına basarak Visual Basic Düzenleyicisi'ni (VBE) açın.

- Adım 2: Bir UserForm ekleyin. VBE'de, "Ekle" menüsüne gidin ve projenize yeni bir UserForm eklemek için "UserForm"u seçin. UserForm, VBE'nin sol tarafındaki Proje Gezgini penceresinde görünecektir.

- Adım 3: UserForm'u tasarlayın. Kod modülünü açmak için Proje Gezgini'ndeki UserForm'a çift tıklayın.

İhtiyaç duyduğunuz TextBox, Label ve CommandButton gibi kontrolleri ekleyerek UserForm'u tasarlayın.
Bu örnekte, UserForm'da “TextBox1” adında bir TextBox denetiminiz ve “CommandButton1” adında bir CommandButton denetiminiz olduğundan emin olun.
- Adım 4: Şimdi Userform'a sağ tıklayın ve "Kodu Görüntüle"yi seçerek "UserForm" kod penceresini açın.
Aşağıdaki kodu Sub ve End Sub arasına ekleyin. VBE'de yapılan değişiklikleri uygulamak için çalışma kitabınızı kaydedin ve kapatın.
Private Sub CommandButton1_Click()
'TextBox'tan girilen verileri al
Dim data As String
data = TextBox1.Value
'Çalışma sayfasını girilen verilerle güncelle
Sheet1.Range(“A1”).Value = data
'UserForm'u kapat
Unload Me
End Sub
Public Sub UserForm_Click()
End Sub

- Adım 5 : UserForm’u görüntülemek için Excel çalışma kitabınıza gidin ve “Geliştirici” seçeneğini seçin.

“Geliştirici” menüsünden Ekle’ye gidin ve Düğme (Form Kontrolü)’nü seçin.

Excel çalışma sayfasının herhangi bir yerine “Düğme”yi ekleyin.

- Adım 6: Şimdi, makroyu bu butona atayın ve UserForm ile ilişkili makroyu seçin. Bunu yapmak için, butona sağ tıklayın, “Assign Macro”yu seçin ve iletişim kutusu görünecektir.

- Adım 7: “Makro Ata” iletişim kutusunda “Yeni” düğmesine tıklayın. Visual Basic Editor (VBE) penceresi, makro şablonunu içeren yeni bir modülle açılacaktır. UserForm'u görüntülemek için makro kodunu modüle yazın. Örneğin:

- Adım 8: Şimdi butona tıkladığınızda makro çalıştırılacak ve UserForm (bu örnekte “UserForm1″ olarak adlandırılmıştır) görüntülenecektir.

- Adım 9: Görüntülenen VBA Close UserForm'da, TextBox denetimine istenen verileri girin. Çalışma sayfasını girilen verilerle güncellemek ve UserForm'u kapatmak için CommandButton'a tıklayın.

Şimdi, VBA Close UserForm after click'in kapatıldığını ve girilen verilerin A1 hücresine doldurulduğunu göreceksiniz.

- Adım 10: Button 1'e tekrar tıklarsanız, UserForm'un sıfırlandığını ve hiçbir veriyi saklamadığını göreceksiniz. Bunun nedeni, kodda kullanılan ve UserForm'u boşaltan ve içeriğini temizleyen "Unload Me" ifadesidir.

Örnek 2 – Excel VBA'da Gizle Yöntemini Kullanarak UserForm'u Kapatma
- Adım 1: Visual Basic Düzenleyicisini açın.
- Adım 2: Bir UserForm ekleyin
Bir UserForm oluşturmak için önceki örnekte belirtilen adımları izleyin.
- Adım 3: UserForm'a Kod Ekleyin
Şimdi Userform'a sağ tıklayın ve "Kodu Görüntüle"yi seçerek "UserForm" kod penceresini açın.
Aşağıdaki kodu Sub ve End Sub satırlarının arasına ekleyin.
Private Sub CommandButton1_Click()
'TextBox'tan girilen verileri al
Dim data As String
data = TextBox1.Value
'Çalışma sayfasını girilen verilerle güncelle
Sheet2.Range(“A1”).Value = data
'UserForm
Me.Hide
End Sub
Public Sub UserForm_Click()
End Sub

- Adım 4: VBE'yi Kaydedin ve Kapatın. VBE'de yapılan değişiklikleri uygulamak için çalışma kitabınızı kaydedin.
- Adım 5: UserForm’u görüntülemek için, önceki örnekte belirtilen adımları izleyin: “UserForm’u Görüntüle.”
UserForm'u sergilemek için Modülü oluşturduğunuzda, kod düğmeye atanır. Şekle veya düğmeye tıkladığınızda, UserForm ekranda gösterilecektir.

- Adım 6: Görüntülenen UserForm'da, TextBox denetimine istediğiniz verileri girin.

- Adım 7: Girilen verilerle çalışma sayfasını güncellemek için CommandButton'a tıklayın.
TextBox'taki veriler belirtilen çalışma sayfası ve hücre referansına yazılacak , bu durumda bu hücre A1 olacaktır.

- Adım 8: Çalışma sayfasındaki veriler güncellendikten sonra, UserForm Me.Hide ifadesi kullanılarak gizlenecektir. UserForm, çalışma sayfasındaki güncellenmiş verileri korurken ekrandan kaybolacaktır.
Komut düğmesine tekrar tıkladığınızda, girilen verilerin hala metin kutusunda kaldığını göreceksiniz. Bu davranış, UserForm'u gizleyen ancak verilerini ve durumunu koruyan VBA kodunda "Me.Hide" ifadesinin kullanılmasının bir sonucudur.

Excel VBA'da Boşalt ve Gizle Arasındaki Fark
Excel VBA'da Unload ve Hide arasındaki temel fark, UserForm'u nasıl işlediklerinde yatmaktadır:
- Unload: Unload ifadesi UserForm'u bellekten kaldırarak sistem kaynaklarını serbest bırakır. UserForm'u etkin bir şekilde sonlandırır ve tüm denetimlerini ve değişkenlerini sıfırlar. Bir kez boşaltıldıktan sonra, UserForm'a yalnızca yeniden yüklerseniz yeniden erişebilirsiniz.
- Gizle: Gizle yöntemi UserForm'u bellekte tutar ancak görünmez hale getirir. Kontrollerin ve değişkenlerin durumunu korur ve Show yöntemini kullanarak gerektiğinde UserForm'u tekrar göstermenize olanak tanır. UserForm'u gizlemek, onu görünümden kaldırırken ancak verilerini geçici olarak korurken faydalıdır.
Dikkat Edilmesi Gereken Önemli Noktalar
- “Unload Me” ifadesini kullanırken veya “Me.Hide” kullanarak UserForm’u gizlerken, UserForm’un otomatik olarak kapanmayacağını anlamak önemlidir. UserForm’un otomatik olarak kapanmasını sağlamak için, “Unload Me” ifadesini veya “Me.Hide”ı içeren kodu açıkça tetiklemeniz gerekir.
- Belirli bir süreden sonra bir VBA Close UserForm'u kapatma işlevine gelince, belirli bir süreden sonra bir VBA Close UserForm'u otomatik olarak kapatmak için yerleşik bir özellik olmadığını belirtmek önemlidir. Zamanlayıcılar veya uygulama olayları kullanmak gibi ek kod mantığını dahil etmeniz gerekir.
- VBA Close UserForm modülünü kapatmadan önce, istenen değeri global değişkenlerde veya özelliklerde saklayabilirsiniz. VBA kodunuzun diğer bölümlerinde saklanan değere erişmenizi ve onu kullanmanızı sağlar, böylece VBA close UserForm ve return value istenen sonuca ulaşır.
