Genel Bakış
Range.Hidden (Range.Hidden property), bir Range nesnesindeki satırların veya sütunların gizli olup olmadığını bildiren okunur ve yazılır bir özelliktir. Değeri True yapınca satırlar ya da sütunlar gizlenir, False yapınca yeniden görünür. Raporları hazırlarken ara hesap sütunlarını saklamak veya koşula uyan satırları gizlemek için sık kullanılır.
Gizli satırlardaki hücrelere VBA ile yazabilir ve oradan okuyabilirsiniz; gizleme yalnızca görünümü etkiler, veriyi silmez. Çok sayıda satırı tek tek gizlemek yerine, gizlenecek satırları bir aralıkta toplayıp tek seferde gizlemek makroyu hızlandırır.
TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ürün
A2 = Klavye
A3 = Fare
A4 = Monitör
A5 = Yazıcı
B1 = Bölge
B2 = İstanbul
B3 = Ankara
B4 = İzmir
B5 = Bursa
C1 = Adet
C2 = 120
C3 = 200
C4 = 45
C5 = 30
D1 = Maliyet
D2 = 45,50
D3 = 22,75
D4 = 1.850,00
D5 = 2.400,00
E1 = Sonuç
E2 = DOĞRU
E3 = YANLIŞ
E4 =
E5 =
Makro D sütununu gizledi. E2 hücresindeki DOĞRU değeri D sütununun gizli olduğunu, E3 hücresindeki YANLIŞ değeri ise C sütununun görünür olduğunu gösterir. Sütunu yeniden göstermek için aynı satırda True yerine False yazın.
TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ad
A2 = Ahmet Yılmaz
A3 = Ayşe Demir
A4 = Mehmet Kaya
A5 = Fatma Çelik
A6 = Ali Şahin
A7 = Zeynep Arslan
A8 = Mustafa Öztürk
A9 = Elif Aydın
B1 = Departman
B2 = Muhasebe
B3 = İnsan Kaynakları
B4 = Satış
B5 = Lojistik
B6 = Satış
B7 = Muhasebe
B8 = İnsan Kaynakları
B9 = Lojistik
C1 = Durum
C2 = Aktif
C3 = Pasif
C4 = Aktif
C5 = Pasif
C6 = Aktif
C7 = Aktif
C8 = Pasif
C9 = Aktif
D1 = Satır Gizli mi
D2 = YANLIŞ
D3 = DOĞRU
D4 = YANLIŞ
D5 = DOĞRU
D6 = YANLIŞ
D7 = YANLIŞ
D8 = DOĞRU
D9 = YANLIŞ
D sütunundaki değerler her satırın gizli olup olmadığını gösterir; örneğin 2. satır için YANLIŞ, 3. satır için DOĞRU yazılmıştır. Pasif durumundaki satırlar gizlendiği için sayfada görünmez, ancak verileri silinmemiştir.
TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ay
A2 = Ocak
A3 = Şubat
A4 = Mart
A5 = Nisan
A6 = Mayıs
B1 = Gider
B2 = 12.500,00
B3 = 11.800,00
B4 = 13.200,00
B5 = 12.950,00
B6 = 14.100,00
C1 = Sonuç
C2 = YANLIŞ
C3 = DOĞRU
C4 = YANLIŞ
C5 =
C6 =
C2 hücresindeki YANLIŞ değeri, 2:4 aralığında IsNull denetiminin sonucudur; bu çalıştırmada denetim Null saptamadı, yani karışık aralıkta Null dönmesine güvenmemelisiniz. C3 hücresindeki DOĞRU değeri 3. satır gizliyken, C4 hücresindeki YANLIŞ değeri satır yeniden gösterildikten sonra okunmuştur. Sonuçta tüm satırlar görünür durumda kalır.
Söz dizimi
Özellik, bir Range nesnesi üzerinden okunur ve değer atanır:
VBA
6 satır
' Okuma
sonuc = ifade.Hidden
' Yazma
ifade.Hidden = True ' gizler
ifade.Hidden = False ' gösterir
- ifade: Range türünde bir nesne ifadesidir; Rows(3), Columns("D"), Range("A2:A5").EntireRow gibi tam satır veya tam sütun başvurusu olmalıdır. Zorunludur.
- Hidden: Variant türünde değer döndürür veya alır; True gizli, False görünür anlamına gelir.
Dönüş değeri ve davranış
Özelliğin okunan değeri aralığın durumuna göre değişir:- True: Aralıktaki tüm satırlar veya sütunlar gizlidir.
- False: Aralıktaki tüm satırlar veya sütunlar görünürdür.
- Karışık aralık: Aralıkta hem gizli hem görünür satırlar ya da sütunlar varsa sonuç tek başına güvenilir bir gizli/görünür bilgisi vermeyebilir. Örnek 3'te 3. satır gizliyken 2:4 aralığı için IsNull denetimi YANLIŞ sonuç verdi. Bu nedenle karışık aralıklarda sonucu Variant bir değişkene alın, IsNull işleviyle denetleyin ve kesin sonuç gerekiyorsa satırları tek tek okuyun.
Gizleme ile ilgili ayrıntılar
Elle yaptığınız Giriş > Hücreler > Biçim > Gizle ve Göster > Satırları Gizle (Home > Cells > Format > Hide & Unhide > Hide Rows) işlemi ile Hidden özelliğini True yapmak aynı sonucu verir. Filtre ile gizlenen satırlar için de Hidden True döner. Satır yüksekliğini ya da sütun genişliğini sıfırlamak da satır veya sütunu gizlenmiş gösterir; bu nedenle RowHeight ve ColumnWidth özellikleriyle birlikte düşünün.Gizli satırlardaki hücrelere VBA ile yazabilir ve oradan okuyabilirsiniz; gizleme yalnızca görünümü etkiler, veriyi silmez. Çok sayıda satırı tek tek gizlemek yerine, gizlenecek satırları bir aralıkta toplayıp tek seferde gizlemek makroyu hızlandırır.
1. Sütunu gizleme ve durumunu okuma
Maliyet sütununu (D) raporu paylaşmadan önce gizlemek istiyorsunuz. Aşağıdaki kodu standart bir modüle yapıştırın. Makro D sütununu gizler, ardından D ve C sütunlarının Hidden değerini E2 ve E3 hücrelerine yazar.TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ürün
A2 = Klavye
A3 = Fare
A4 = Monitör
A5 = Yazıcı
B1 = Bölge
B2 = İstanbul
B3 = Ankara
B4 = İzmir
B5 = Bursa
C1 = Adet
C2 = 120
C3 = 200
C4 = 45
C5 = 30
D1 = Maliyet
D2 = 45,50
D3 = 22,75
D4 = 1.850,00
D5 = 2.400,00
E1 = Sonuç
E2 = DOĞRU
E3 = YANLIŞ
E4 =
E5 =
VBA
13 satır
Option Explicit
Sub SutunGizle()
Dim ws As Worksheet
Set ws = ActiveSheet
' Maliyet sütununu gizle
ws.Columns("D").Hidden = True
' Durumları sonuç hücrelerine yaz
ws.Range("E2").Value = ws.Columns("D").Hidden
ws.Range("E3").Value = ws.Columns("C").Hidden
End Sub
Range.Hidden
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Ürün | Bölge | Adet | Maliyet | Sonuç |
| 2 | Klavye | İstanbul | 120 | 45,50 | DOĞRU |
| 3 | Fare | Ankara | 200 | 22,75 | YANLIŞ |
| 4 | Monitör | İzmir | 45 | 1.850,00 | |
| 5 | Yazıcı | Bursa | 30 | 2.400,00 |
Satış RaporuExcelDepo v1.0.0
2. Koşula göre satır gizleme
Durumu Pasif olan personelin satırlarını gizlemek istiyorsunuz. Kodu standart bir modüle yapıştırın. Makro önce Pasif satırları gizler, sonra her satırın Hidden değerini D sütununa yazar.TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ad
A2 = Ahmet Yılmaz
A3 = Ayşe Demir
A4 = Mehmet Kaya
A5 = Fatma Çelik
A6 = Ali Şahin
A7 = Zeynep Arslan
A8 = Mustafa Öztürk
A9 = Elif Aydın
B1 = Departman
B2 = Muhasebe
B3 = İnsan Kaynakları
B4 = Satış
B5 = Lojistik
B6 = Satış
B7 = Muhasebe
B8 = İnsan Kaynakları
B9 = Lojistik
C1 = Durum
C2 = Aktif
C3 = Pasif
C4 = Aktif
C5 = Pasif
C6 = Aktif
C7 = Aktif
C8 = Pasif
C9 = Aktif
D1 = Satır Gizli mi
D2 = YANLIŞ
D3 = DOĞRU
D4 = YANLIŞ
D5 = DOĞRU
D6 = YANLIŞ
D7 = YANLIŞ
D8 = DOĞRU
D9 = YANLIŞ
VBA
19 satır
Option Explicit
Sub PasifSatirlariGizle()
Dim ws As Worksheet
Dim i As Long
Set ws = ActiveSheet
' 2. ile 9. satırlar arasında Pasif olanları gizle
For i = 2 To 9
If ws.Cells(i, 3).Value = "Pasif" Then
ws.Rows(i).Hidden = True
End If
Next i
' Her satırın gizli olup olmadığını D sütununa yaz
For i = 2 To 9
ws.Cells(i, 4).Value = ws.Rows(i).Hidden
Next i
End Sub
Range.Hidden
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ad | Departman | Durum | Satır Gizli mi |
| 2 | Ahmet Yılmaz | Muhasebe | Aktif | YANLIŞ |
| 3 | Ayşe Demir | İnsan Kaynakları | Pasif | DOĞRU |
| 4 | Mehmet Kaya | Satış | Aktif | YANLIŞ |
| 5 | Fatma Çelik | Lojistik | Pasif | DOĞRU |
| 6 | Ali Şahin | Satış | Aktif | YANLIŞ |
| 7 | Zeynep Arslan | Muhasebe | Aktif | YANLIŞ |
| 8 | Mustafa Öztürk | İnsan Kaynakları | Pasif | DOĞRU |
| 9 | Elif Aydın | Lojistik | Aktif | YANLIŞ |
Personel ListesiExcelDepo v1.0.0
3. Karışık aralıkta Null sonucu
Bir aralıkta hem gizli hem görünür satır olduğunda Hidden özelliğinin nasıl davrandığını sınamak istiyorsunuz. Kodu standart bir modüle yapıştırın. Makro 3. satırı gizler, 2:4 aralığını IsNull ile denetler, sonra satırı yeniden gösterip durumunu yazar.TABLO (hücre = Excel'in gösterdiği değer):
A1 = Ay
A2 = Ocak
A3 = Şubat
A4 = Mart
A5 = Nisan
A6 = Mayıs
B1 = Gider
B2 = 12.500,00
B3 = 11.800,00
B4 = 13.200,00
B5 = 12.950,00
B6 = 14.100,00
C1 = Sonuç
C2 = YANLIŞ
C3 = DOĞRU
C4 = YANLIŞ
C5 =
C6 =
VBA
19 satır
Option Explicit
Sub KarisikAraligiDene()
Dim ws As Worksheet
Set ws = ActiveSheet
' Yalnızca 3. satırı gizle
ws.Rows(3).Hidden = True
' 2:4 aralığında karışık durum var mı? (Null ise True)
ws.Range("C2").Value = IsNull(ws.Rows("2:4").Hidden)
' 3. satır şu an gizli
ws.Range("C3").Value = ws.Rows(3).Hidden
' Satırı yeniden göster ve durumunu yaz
ws.Rows(3).Hidden = False
ws.Range("C4").Value = ws.Rows(3).Hidden
End Sub
Range.Hidden
Formülünü incelemek için bir hücre seçin.| A | B | C | |
|---|---|---|---|
| 1 | Ay | Gider | Sonuç |
| 2 | Ocak | 12.500,00 | YANLIŞ |
| 3 | Şubat | 11.800,00 | DOĞRU |
| 4 | Mart | 13.200,00 | YANLIŞ |
| 5 | Nisan | 12.950,00 | |
| 6 | Mayıs | 14.100,00 |
Aylık GiderExcelDepo v1.0.0
Kullanırken dikkat edin
- Tek hücre başvurusu hata verir: Range("A1").Hidden = True gibi bir ifade 1004 numaralı hataya yol açar. Her zaman Rows(...), Columns(...), EntireRow veya EntireColumn ile tam satır ya da sütun başvurusu kullanın; örneğin Range("A1").EntireRow.Hidden = True.
- Null değerini unutmayın: Karışık bir aralıkta Hidden sonucunun Null olacağını varsaymayın; Örnek 3'te 2:4 aralığı için IsNull denetimi YANLIŞ sonuç verdi. Sonucu Boolean türünde bir değişkene atamak yerine değişkeni Variant tanımlayın ve önce IsNull ile denetleyin. Kesin sonuç gerekiyorsa satırları tek tek okuyun.
- Filtre ve gruplama ile birlikte: Filtre uygulanmış satırlar da Hidden = True döndürür. Filtreyi kaldırmak için Hidden özelliğini değiştirmek yerine AutoFilter veya ShowAllData yöntemlerini kullanın. Gruplanmış (Veri > Anahat) satırlarda da gizleme Hidden ile okunabilir.
- Gizli veriler formüllerde kullanılır: Gizlenen satır ve sütunlardaki veriler hesaplamalara dahil olmaya devam eder. Yalnızca görünen satırları toplamak istiyorsanız ALTTOPLAM işlevini kullanın.
- İlgili konular: Range.EntireRow, Range.EntireColumn, Range.RowHeight, Range.ColumnWidth, Range.Group, Range.AutoFilter, Range.SpecialCells (xlCellTypeVisible), IsNull işlevi, ALTTOPLAM işlevi.