Genel Bakış
Application.Visible (Application.Visible property), Excel uygulamasının ekranda görünüp görünmediğini belirten okunur ve yazılır bir Boolean özelliğidir. False yapıldığında Excel penceresi ve açık tüm çalışma kitabı pencereleri gizlenir, True yapıldığında yeniden görünür. Makroların kullanıcıyı rahatsız etmeden arka planda çalışması ya da bir uygulama gibi yalnızca kendi arayüzünü göstermesi için kullanılır.
B2 hücresine yazılan YANLIŞ değeri, makro çalışırken Excel'in görünürlük durumudur. B3 hücresinde ekran güncelleme ayarı (DOĞRU), B4 hücresinde ise uyarı iletilerinin ayarı (YANLIŞ) görünür. Bu üç özellik birbirinden bağımsızdır.
Başlangıçta Visible değeri YANLIŞ, gizleme sonrasında YANLIŞ, yeniden gösterme sonrasında DOĞRU olarak okunur. Hata olsa bile Hata etiketi Excel'i görünür yapar, böylece pencere kaybolmuş gibi görünen bir oturum kalmaz.
Makro bittiğinde Ocak için Hedefte, Şubat için Hedefin altında, Mart için Hedefte, Nisan için Hedefin altında ve Mayıs için Hedefte sonucu yazılır. Excel işlem boyunca gizli kalır, sonunda yeniden görünür yapılır. Bu kadar kısa bir işlemde gizleme şart değildir; örnek, kalıbı göstermek içindir.
Söz dizimi
Özellik, Application nesnesine bağlıdır ve hem okunabilir hem de yazılabilir:
VBA
5 satır
ifade.Visible
Application.Visible = True
Application.Visible = False
Durum = Application.Visible
- ifade: Application nesnesini temsil eden ifade; VBA içinde doğrudan Application yazmanız yeterlidir. Zorunludur.
- Değer: Boolean türündedir. True ise Excel görünürdür, False ise gizlidir. Değer atanmazsa mevcut durum okunur.
Dönüş değeri ve davranışı
Özellik, Excel görünürken True, gizliyken False döndürür. Normal biçimde kullanıcının açtığı bir Excel oturumunda varsayılan değer True'dur. Excel, başka bir programdan otomasyonla (örneğin CreateObject ile) başlatıldığında ise varsayılan olarak gizli başlar ve Visible değeri False olur.- Gizlenen öğeler: Excel ana penceresi ve tüm çalışma kitabı pencereleri. Kitaplar açık kalır, kodunuz hücrelere ve nesnelere erişmeye devam eder.
- Etkilenmeyenler: Çalışma sayfalarının kendi görünürlüğü (Worksheet.Visible) ve tek bir kitap penceresinin görünürlüğü (Window.Visible) ayrı özelliklerdir; bunlar Application.Visible ile karıştırılmamalıdır.
- UserForm: Excel gizliyken bile UserForm'u Show ile görüntüleyebilirsiniz; bu yöntemle yalnızca formu olan uygulama görünümü elde edilir.
Ne zaman kullanılır
Kısa süren işlemlerde ekran titremesini önlemek için genellikle Application.ScreenUpdating özelliği yeterlidir. Application.Visible şu durumlarda tercih edilir:- Uygulama görünümü: Çalışma kitabı açılırken Excel penceresini gizleyip yalnızca bir UserForm göstermek.
- Arka plan işlemleri: Kullanıcının pencerelerin açılıp kapandığını görmesini istemediğiniz uzun hazırlık işlemleri.
- Otomasyon: Başka bir uygulamadan başlatılan Excel örneğini görünür hale getirmek ya da gizli tutmak.
1. Mevcut görünürlük durumunu okuma
Makro, Excel'in görünür olup olmadığını ve iki ilgili uygulama ayarının değerini sayfaya yazar. Kodu standart bir modüle yapıştırın ve Durum sayfasında çalıştırın.
VBA
10 satır
Option Explicit
Sub DurumYaz()
' Uygulama görünürlüğünü ve ilgili ayarları sayfaya yazar
With ThisWorkbook.Worksheets("Durum")
.Range("B2").Value = Application.Visible
.Range("B3").Value = Application.ScreenUpdating
.Range("B4").Value = Application.DisplayAlerts
End With
End Sub
Application.Visible
Formülünü incelemek için bir hücre seçin.| A | B | |
|---|---|---|
| 1 | Kontrol | Sonuç |
| 2 | Application.Visible | YANLIŞ |
| 3 | Application.ScreenUpdating | DOĞRU |
| 4 | Application.DisplayAlerts | YANLIŞ |
DurumExcelDepo v1.0.0
2. Excel'i gizleyip yeniden gösterme
Makro Excel'i gizler, gizliyken özelliğin değerini okur, sonra yeniden görünür yapar. Hata olursa Excel'in gizli kalmaması için hata yönetimi eklenmiştir. Kodu standart bir modüle yapıştırın.
VBA
24 satır
Option Explicit
Sub GizleVeGoster()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Gizleme Testi")
On Error GoTo Hata
' Başlangıç durumu
ws.Range("B2").Value = Application.Visible
' Excel'i gizle ve gizliyken durumu oku
Application.Visible = False
ws.Range("B3").Value = Application.Visible
' Excel'i yeniden göster
Application.Visible = True
ws.Range("B4").Value = Application.Visible
Exit Sub
Hata:
' Ne olursa olsun Excel görünür bırakılır
Application.Visible = True
End Sub
Application.Visible
Formülünü incelemek için bir hücre seçin.| A | B | |
|---|---|---|
| 1 | Adım | Visible değeri |
| 2 | Başlangıç | YANLIŞ |
| 3 | Gizliyken | YANLIŞ |
| 4 | Sonunda | DOĞRU |
Gizleme TestiExcelDepo v1.0.0
3. Arka planda hedef karşılaştırması
Aylık satışlar hedefle karşılaştırılır ve sonuç Durum sütununa yazılır. İşlem sırasında Excel gizlenir, bitince geri gösterilir. Kodu standart bir modüle yapıştırın.
VBA
25 satır
Option Explicit
Sub HedefKontrol()
Dim ws As Worksheet
Dim r As Long
Set ws = ThisWorkbook.Worksheets("Aylık Satış")
On Error GoTo Hata
Application.Visible = False
' 2. satırdan 6. satıra kadar sonlu döngü
For r = 2 To 6
If ws.Cells(r, 2).Value >= ws.Cells(r, 3).Value Then
ws.Cells(r, 4).Value = "Hedefte"
Else
ws.Cells(r, 4).Value = "Hedefin altında"
End If
Next r
Application.Visible = True
Exit Sub
Hata:
Application.Visible = True
End Sub
Application.Visible
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ay | Satış | Hedef | Durum |
| 2 | Ocak | 125.000 | 120.000 | Hedefte |
| 3 | Şubat | 98.000 | 110.000 | Hedefin altında |
| 4 | Mart | 143.000 | 130.000 | Hedefte |
| 5 | Nisan | 101.000 | 115.000 | Hedefin altında |
| 6 | Mayıs | 156.000 | 150.000 | Hedefte |
Aylık SatışExcelDepo v1.0.0
Kullanırken dikkat edin
- Excel'i görünür bırakmayı unutmayın: Application.Visible = False yaptıktan sonra makro hata verip durursa Excel gizli kalabilir. Böyle bir oturumu yalnızca Görev Yöneticisi'nden (Task Manager) kapatabilirsiniz. Bu yüzden her zaman On Error GoTo ile bir hata yönetimi kurun ve hata etiketinde Application.Visible = True çalıştırın.
- Tüm pencereler gizlenir: Özellik yalnızca makroyu içeren kitabı değil, açık olan tüm çalışma kitabı pencerelerini etkiler. Tek bir kitap penceresini gizlemek istiyorsanız Windows("Kitap1.xlsx").Visible özelliğini kullanın.
- Çoğu zaman ScreenUpdating yeterlidir: Yalnızca ekran titremesini ve işlem süresini azaltmak istiyorsanız Application.ScreenUpdating = False çoğunlukla yeterli ve daha güvenlidir. Visible özelliği, arayüzün tamamen gizlenmesi gerektiğinde tercih edilmelidir.
- Otomasyonla açılan Excel: Başka bir programdan oluşturulan Excel örneği varsayılan olarak gizlidir. Kullanıcının çalışma kitabını görmesi gerekiyorsa Visible özelliğini True yapmanız gerekir; iş bittiğinde de Quit ile uygulamayı kapatmayı unutmayın, aksi takdirde gizli bir Excel işlemi bellekte kalır.
- İlgili konular:
- Application.ScreenUpdating: Ekran yenilemesini kapatıp açar.
- Application.DisplayAlerts: Uyarı iletilerini bastırır.
- Window.Visible: Tek bir çalışma kitabı penceresini gizler ya da gösterir.
- Worksheet.Visible: Çalışma sayfasını gizler, çok gizli yapar ya da gösterir.
- Application.WindowState: Excel penceresini simge durumuna küçültür ya da büyütür.
- Workbook_Open olayı: Kitap açılırken Excel'i gizleyip UserForm göstermek için kullanılır.
- On Error GoTo: Hata durumunda Excel'i yeniden görünür yapmak için kullanılır.