Özellik ikonu

Show

İndirme izni yok

Genel Bakış

Show (UserForm.Show), bir kullanıcı formunu belleğe yükleyip ekranda görüntüleyen yöntemdir. Form henüz yüklenmemişse Excel onu otomatik olarak yükler. İsteğe bağlı bağımsız değişkeniyle formun modal mı yoksa modless mı açılacağını belirler.

Söz dizimi​

Yöntem bir UserForm nesnesi üzerinde çağrılır. Form adı üzerinden ya da form içinden Me ile kullanılabilir:
VBA 3 satır
UserForm1.Show
UserForm1.Show vbModeless
UserForm1.Show Modal:=False
Parametre:
  • Modal: isteğe bağlıdır. Formun kipini belirler; varsayılanı vbModal değeridir.
Geçerli değerler:
  • vbModal (1): Modal gösterim. Form kapanana kadar kullanıcı Excel'in başka yerine tıklayamaz ve Show satırından sonraki kod çalışmaz.
  • vbModeless (0): Modless gösterim. Form açıkken sayfada çalışmaya devam edilebilir ve kod beklemeden sonraki satırla sürer.
Show bir değer döndürmez. Kullanıcının hangi düğmeye bastığını öğrenmek için form modülünde bir genel değişken ya da form özelliği kullanılır.

Modal ve modless gösterim​

Modal kipte Show satırı, form Hide ile gizlenene ya da Unload ile kaldırılana kadar bekler. Bu nedenle kullanıcıdan veri alıp hemen işlemek için en uygun kiptir. Modless kipte form ekranda kalır, çağıran yordam ise sonuna kadar çalışır. Araç çubuğu benzeri, sürekli açık kalan formlarda tercih edilir.
Formun kipi, Visual Basic Düzenleyicisi'nde (VBE) form seçiliyken Özellikler penceresindeki ShowModal özelliğiyle de belirlenebilir. Show çağrısında verilen Modal değeri bu ayarı geçersiz kılar.
Bir modal form ekrandayken başka bir formu modless açmaya çalışırsanız 401 numaralı hata alırsınız. Formu konumlandırmak için StartUpPosition özelliğini kullanın.

Yükleme, olay sırası ve kapatma​

Show çağrıldığında form yüklü değilse önce Initialize olayı, ardından form görüntülenirken Activate olayı çalışır. Form zaten yüklüyse ve gizliyse yalnızca yeniden görüntülenir; denetimlerdeki değerler korunur.
Formu kapatmanın iki yolu vardır:
  • Hide: Formu gizler ama bellekte tutar. Denetimlerin değerleri saklanır.
  • Unload: Formu bellekten kaldırır. Bir sonraki Show çağrısında form sıfırdan yüklenir.
Varsayılan örnek yerine ayrı bir kopya açmak isterseniz:
VBA 3 satır
Dim f As UserForm1
Set f = New UserForm1
f.Show
Yüklü form sayısını VBA.UserForms.Count ile denetleyebilirsiniz.

1. Formu modal ve modless açma​

Visual Basic Düzenleyicisi'nde (Alt+F11) Ekle > UserForm (Insert > UserForm) ile UserForm1 adlı bir form ekleyin. Ardından Ekle > Modül (Insert > Module) ile standart modül açıp aşağıdaki kodu yapıştırın. Form açıldığı için bu örnek otomatik çalıştırılmaz; makroları Geliştirici sekmesindeki Makrolar penceresinden deneyin.
VBA 15 satır
Option Explicit

' Modal gösterim: form kapanana kadar sonraki satıra geçilmez
Sub PersonelFormunuAc()
    UserForm1.Show
    ' Form Hide veya Unload ile kapandıktan sonra buradan devam eder
    ActiveSheet.Range("E1").Value = "Form kapandı"
End Sub

' Modless gösterim: kod beklemeden devam eder
Sub FormuModlessAc()
    UserForm1.Show vbModeless
    ' Bu satır form ekrandayken hemen çalışır
    ActiveSheet.Range("E1").Value = "Form açıldı, kod devam ediyor"
End Sub
Show
Formülünü incelemek için bir hücre seçin.
ABC
1PersonelDepartmanŞehir
2Ayşe DemirMuhasebeAnkara
3Mehmet KayaSatışİzmir
4Elif Yıldızİnsan KaynaklarıBursa
Personel ListesiExcelDepo v1.0.0
PersonelFormunuAc makrosunda E1 hücresine yazan satır, form kapanana kadar çalışmaz. FormuModlessAc makrosunda ise form ekrandayken bile hemen çalışır ve sayfada çalışmaya devam edebilirsiniz. İki makro arasındaki fark, Show satırının beklemesiyle ilgilidir.

2. Modal ve modless sabitlerinin değerleri​

Standart bir modüle aşağıdaki kodu yapıştırın. Makro, Show yönteminin Modal bağımsız değişkeninde kullanılan iki sabitin sayısal değerini C sütununa yazar. Bu örnek form gerektirmez.
VBA 7 satır
Option Explicit

Sub SabitleriYaz()
    ' Show yönteminin Modal parametresindeki sabitler
    Range("C2").Value = vbModal
    Range("C3").Value = vbModeless
End Sub
Show
Formülünü incelemek için bir hücre seçin.
ABC
1SabitAnlamıDeğer
2vbModalForm kapanana kadar bekler1
3vbModelessKod beklemeden sürer0
Sabit DeğerlerExcelDepo v1.0.0
Makro çalıştıktan sonra C2 hücresinde vbModal için 1, C3 hücresinde vbModeless için 0 değeri görünür. Dolayısıyla Show vbModeless ile Show 0 aynı anlama gelir.

3. Show öncesi yüklü form denetimi​

Standart bir modüle aşağıdaki kodu yapıştırın. Makro, VBA.UserForms.Count ile bellekte yüklü form sayısını B2 hücresine yazar ve duruma göre B3 hücresine bir açıklama koyar. Bu denetim, Show çağrısından önce açık form olup olmadığını anlamak için kullanılabilir.
VBA 15 satır
Option Explicit

Sub FormDurumunuYaz()
    Dim sayi As Long
    
    ' Bellekte yüklü kullanıcı formu sayısı
    sayi = VBA.UserForms.Count
    Range("B2").Value = sayi
    
    If sayi = 0 Then
        Range("B3").Value = "Yüklü form yok; Show formu yükleyip gösterir"
    Else
        Range("B3").Value = "Yüklü form var; Show gizli formu yeniden gösterir"
    End If
End Sub
Show
Formülünü incelemek için bir hücre seçin.
AB
1KontrolSonuç
2Yüklü form sayısı0
3DurumYüklü form yok; Show formu yükleyip gösterir
Form DurumuExcelDepo v1.0.0
Makro B2 hücresine yüklü form sayısını (0) yazar, B3 hücresine ise buna uygun açıklamayı koyar: Yüklü form yok; Show formu yükleyip gösterir. Formlar kapatılmadan bellekte kalmışsa bu sayı sıfırdan büyük olur.

Kullanırken dikkat edin​

  • Modal formda kod bekler: Modal açılışta Show satırından sonraki kod, form kapanana kadar çalışmaz. Form sonuçlarını okuyan kodu Show satırından sonra yazın; ancak form Unload ile kaldırıldıysa denetim değerlerine artık ulaşamazsınız. Değerleri okumak için formu Hide ile gizleyin ya da değerleri önce bir genel değişkene aktarın.
  • Modless formda sınırlar: Modal bir form ekrandayken Show vbModeless çağırırsanız hata alırsınız. Modless formda çağıran yordam hemen biter; formun sonucunu form içindeki olay yordamlarında işleyin.
  • Form adı ve varsayılan örnek: UserForm1.Show formun varsayılan örneğini kullanır; form Hide ile gizlendiyse eski değerler görünür. Her seferinde temiz bir form istiyorsanız Unload kullanın ya da New ile yeni bir örnek oluşturun.
  • Çalıştırma ortamı: Form içeren makroları denerken formu ve modülü aynı çalışma kitabında tutun. Kitabı makro içerebilen biçimde (.xlsm) kaydedin; aksi halde form ve kod kaybolur.
  • İlgili konular: Load deyimi, Unload deyimi, Hide yöntemi, UserForm nesnesi, Initialize olayı, Activate olayı, ShowModal özelliği, StartUpPosition özelliği, Me anahtar sözcüğü, MsgBox işlevi, InputBox işlevi, Application.Dialogs koleksiyonunun Show yöntemi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
10
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst