Genel Bakış
ClearContents (İçeriği Temizle), bir Range nesnesinin yöntemidir ve aralıktaki sabit değerleri ile formülleri siler. Hücrelerin biçimlendirmesi, veri doğrulaması ve koşullu biçimleri yerinde kalır. Veri giriş alanlarını boşaltıp sayfanın görünümünü bozmadan yeniden kullanıma hazırlamak için en sık kullanılan VBA yöntemlerinden biridir.
Makro çalıştıktan sonra B2:D6 aralığındaki adetler silinir, ürün adları ve başlıklar yerinde kalır. Toplam sütunundaki formüller silinmediği için boş girdileri toplar; örneğin E2 hücresi 0 değerini gösterir. Hücrelerin sayı biçimi de korunduğundan yeni değerler yazıldığında aynı biçimle görünür.
Makro B2:C6 aralığındaki sabit sayıları temizler. Aralıkta formül olsaydı SpecialCells onları seçmeyeceği için formüller silinmezdi. Tutar sütunundaki formüller korunur ve girdiler boş olduğundan D2 hücresi 0,00 sonucunu verir. Ürün adları A sütununda olduğu için işlem dışında kalır.
Durumu Tamamlandı olan 2, 4 ve 6. satırlarda A:D hücreleri boşalır ve F sütununa Temizlendi, Temizlendi ve Temizlendi notları yazılır. Bekliyor ve Hazırlanıyor durumundaki kayıtlar değişmez. Durum sütunu temizlenmediği için hangi kaydın tamamlandığı izlenebilir kalır.
Söz dizimi
ClearContents yöntemi bir Range nesnesine uygulanır ve parametre almaz:
VBA
6 satır
ifade.ClearContents
' Örnekler
Range("B2:D6").ClearContents
Selection.ClearContents
Cells.ClearContents
- ifade: Zorunlu. Bir Range nesnesini veren ifade. Tek hücre, çok hücreli aralık, birden çok alan (Union ile birleştirilmiş) ya da SpecialCells sonucu olabilir.
- Parametre: Yoktur; yönteme argüman verilmez.
- Dönüş değeri: Variant döner; uygulamada bu değer kullanılmaz, yöntem tek başına bir deyim olarak yazılır.
Neyi siler, neyi korur
ClearContents yalnızca hücrenin içeriğini boşaltır. Sonuç olarak şunlar olur:- Silinenler: Sayılar, metinler, tarihler ve formüller.
- Korunanlar: Sayı biçimi, yazı tipi, dolgu rengi, kenarlıklar, hizalama, veri doğrulama kuralları ve koşullu biçimlendirme.
- Birleştirilmiş hücreler: Aralık birleştirilmiş bir alanın tamamını kapsıyorsa işlem çalışır. Alanın yalnızca bir bölümünü kapsıyorsa 1004 numaralı çalışma zamanı hatası oluşur.
- Dizi formülleri: Çok hücreli bir dizi formülünün yalnızca bir kısmı temizlenemez; dizinin tamamı aralığa dahil edilmelidir.
- Korumalı sayfa: Kilitli hücreler içeren aralıkta sayfa korumalıysa yöntem hata verir.
Benzer temizleme yöntemleriyle karşılaştırma
Range nesnesinin birkaç temizleme yöntemi vardır ve her biri farklı bir şeyi siler:- Clear: İçeriği, biçimleri, notları ve hemen her şeyi siler; hücre ilk haline döner.
- ClearContents: Yalnızca değer ve formülleri siler.
- ClearFormats: Yalnızca biçimleri siler, içerik kalır.
- ClearComments: Yorumları ve notları siler. Notlar için ClearNotes da kullanılabilir.
- ClearHyperlinks: Köprüleri kaldırır, hücre metni kalır.
- ClearOutline: Gruplama (anahat) yapısını kaldırır.
- Delete: Hücreleri siler ve komşu hücreleri kaydırır; içerik temizleme değildir.
1. Veri giriş alanını temizleme
Sayfada beş ürünün üç aylık satış adetleri ve formülle hesaplanan Toplam sütunu vardır. Aşağıdaki kodu standart modüle yapıştırın. Makro yalnızca B2:D6 girdi alanını boşaltır; ürün adları, başlıklar ve Toplam formülleri yerinde kalır.
VBA
6 satır
Option Explicit
Sub GirdileriTemizle()
' Etkin sayfadaki aylık adet girdilerini sil
ActiveSheet.Range("B2:D6").ClearContents
End Sub
ClearContents
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Ürün | Ocak | Şubat | Mart | Toplam |
| 2 | Kalem | 0 | |||
| 3 | Defter | 0 | |||
| 4 | Silgi | 0 | |||
| 5 | Dosya | 0 | |||
| 6 | Zımba | 0 |
Satış TablosuExcelDepo v1.0.0
2. Yalnızca sabit değerleri temizleme
Sayfada adet ve birim fiyat girdileri ile Tutar sütununda formüller vardır. Kodu standart modüle yapıştırın. Makro, SpecialCells ile aralıktaki sabit değerleri bulur ve yalnızca onları temizler. Seçilecek sabit hücre yoksa SpecialCells hata verdiği için hata yakalanır.
VBA
15 satır
Option Explicit
Sub SabitleriTemizle()
Dim hedef As Range
' Sabit değer içeren hücre yoksa SpecialCells hata verir
On Error Resume Next
Set hedef = ActiveSheet.Range("B2:C6").SpecialCells(xlCellTypeConstants)
On Error GoTo 0
' Hücre bulunduysa yalnızca onları temizle
If Not hedef Is Nothing Then
hedef.ClearContents
End If
End Sub
ClearContents
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ürün | Adet | Birim Fiyat | Tutar |
| 2 | Çay | 0,00 | ||
| 3 | Kahve | 0,00 | ||
| 4 | Şeker | 0,00 | ||
| 5 | Un | 0,00 | ||
| 6 | Makarna | 0,00 |
Fiyat HesabıExcelDepo v1.0.0
3. Koşula göre satır içeriğini temizleme
Sayfada altı sipariş kaydı vardır. Durumu Tamamlandı olan satırların A:D sütunlarındaki içerik temizlenecek ve F sütununa Temizlendi notu yazılacaktır. Kodu standart modüle yapıştırın. Son satır, ilk sütundaki dolu hücrelere göre bulunur ve döngü bu sınırla sonlanır.
VBA
20 satır
Option Explicit
Sub TamamlananlariTemizle()
Dim ws As Worksheet
Dim sonSatir As Long
Dim i As Long
Set ws = ActiveSheet
' A sütunundaki son dolu satırı bul
sonSatir = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To sonSatir
If ws.Cells(i, 5).Value = "Tamamlandı" Then
' Sipariş bilgilerini sil, Durum sütunu kalsın
ws.Range(ws.Cells(i, 1), ws.Cells(i, 4)).ClearContents
ws.Cells(i, 6).Value = "Temizlendi"
End If
Next i
End Sub
ClearContents
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Sipariş No | Müşteri | Şehir | Tutar | Durum | Sonuç |
| 2 | Tamamlandı | Temizlendi | ||||
| 3 | S-1002 | Ayşe Demir | Ankara | 890,00 | Bekliyor | |
| 4 | Tamamlandı | Temizlendi | ||||
| 5 | S-1004 | Fatma Şahin | Bursa | 450,00 | Hazırlanıyor | |
| 6 | Tamamlandı | Temizlendi | ||||
| 7 | S-1006 | Zeynep Arslan | Adana | 960,25 | Bekliyor |
Sipariş KayıtlarıExcelDepo v1.0.0
Kullanırken dikkat edin
- Clear ile karıştırmayın: Clear biçimleri de sildiği için tablonuzun renk, kenarlık ve sayı biçimi kaybolur. Yalnızca verileri boşaltmak istiyorsanız ClearContents kullanın.
- Başlık satırını aralığa katmayın: Tüm sütunu temizleyen Columns("A").ClearContents gibi ifadeler başlık hücresini de siler. Veri alanını B2 gibi ilk veri hücresinden başlatın ve son satırı End(xlUp) ile bulun.
- Formülleri silmemeye dikkat edin: ClearContents hem sabit değerleri hem formülleri siler. Yalnızca girdileri temizlemek istiyorsanız SpecialCells(xlCellTypeConstants) ile aralığı daraltın ya da yalnızca girdi sütunlarını belirtin.
- Hata durumları: Korumalı sayfadaki kilitli hücrelerde, birleştirilmiş hücrelerin bir bölümünde ve dizi formülünün bir kısmında 1004 numaralı hata oluşur. Gerekirse sayfa korumasını kaldırın ya da aralığı birleşik alanın ve dizinin tamamını kapsayacak biçimde genişletin.
- Geri alma yok: Makro ile temizlenen içerik Ctrl+Z ile geri getirilemez. Kritik çalışma kitaplarında makroyu çalıştırmadan önce dosyanın kopyasını alın.
- Geniş aralıklarda performans: Tüm sayfaya Cells.ClearContents uygulamak mümkündür ancak genellikle gerekmez. Yalnızca kullanılan alanı temizlemek için UsedRange.ClearContents ya da belirli bir aralık kullanın.
- İlgili konular:
- Range.Clear: İçerik ve biçimlerin tamamını siler.
- Range.ClearFormats: Yalnızca biçimleri siler.
- Range.ClearComments: Yorum ve notları siler.
- Range.Delete: Hücreleri silip kaydırır.
- Range.SpecialCells: Sabit ya da formüllü hücreleri seçer.
- Range.End: Son dolu hücreyi bulmak için kullanılır.
- Worksheet.UsedRange: Sayfadaki kullanılan alanı verir.
- TOPLA: Örneklerdeki Toplam sütunu gibi hesaplamalarda kullanılan işlev.