Genel Bakış
Range.Clear (Range.Clear method), belirtilen hücre aralığındaki değerleri, formülleri ve her türlü biçimlendirmeyi tek seferde siler. Excel arayüzündeki Giriş > Düzenleme > Temizle > Tümünü Temizle (Home > Editing > Clear > Clear All) komutunun VBA karşılığıdır. Hücreleri silmez ve çevredeki hücreleri kaydırmaz; yalnızca aralığı boş ve varsayılan görünümlü bırakır.
Makro 2. ile 6. satırlar arasında dolaşır. Stok değeri 0 olan Defter ve Ataç satırlarında A:C hücreleri Clear ile boşaltılır; Durum sütununa D3 hücresinde Temizlendi, D5 hücresinde Temizlendi yazılır. Stoku olan satırlara dokunulmaz.
Her iki sütundaki sayılar silinir. Gelir sütununda biçim korunduğu için E2 hücresinde #,##0.00 yazar; Gider sütununda Clear biçimi de sıfırladığından E3 hücresinde General görünür. Bu hücrelere sonradan sayı yazarsanız Gelir sütunu binlik ayraçlı, Gider sütunu ise Genel biçimde görünür.
End(xlUp) ile bulunan son satıra kadar olan A2:D bölgesi temizlenir; başlıklar yerinde kalır. Temizlenen veri satırı sayısı E2 hücresine 6 olarak yazılır. Satır sayısı değişse bile kodu düzenlemeniz gerekmez, çünkü aralık son satıra göre kurulur.
Söz dizimi
Yöntemin söz dizimi çok basittir ve hiçbir bağımsız değişken almaz:ifade.Clear
- ifade: Bir Range nesnesi döndüren değişken ya da ifade (ör. Range("A1:C10"), Selection, Worksheets("Rapor").Cells); zorunludur. Yöntemin kendine ait bağımsız değişkeni yoktur.
Nelerin temizlendiği
Clear yöntemi aralıktaki her şeyi sıfırlar:- Değerler ve formüller: Hücreler tamamen boşalır.
- Biçimler: Sayı biçimi Genel (General) olur; yazı tipi, dolgu rengi, kenarlık ve hizalama varsayılana döner.
- Koşullu biçimlendirme: Aralığa uygulanmış koşullu biçimlendirme kuralları kaldırılır.
- Notlar ve köprüler: Hücrelere eklenmiş notlar ve köprüler de silinir.
Clear yöntem ailesi
Yalnızca belirli öğeleri temizlemek istediğinizde daha dar kapsamlı yöntemler vardır:- ClearContents: Yalnızca değerleri ve formülleri siler; biçimler korunur.
- ClearFormats: Yalnızca biçimleri siler; değerler kalır.
- ClearComments: Aralıktaki yorumları (comments) ve notları siler.
- ClearNotes: Aralıktaki notları siler.
- ClearHyperlinks: Köprüleri kaldırır; hücre metni ve çoğu zaman biçimi yerinde kalır.
- ClearOutline: Aralıktaki gruplama (anahat) yapısını kaldırır.
- Clear: Yukarıdakilerin tümünü bir arada uygular.
1. Sıfır stoklu satırları temizleme
Stok sütunu 0 olan ürünlerin Ürün, Stok ve Birim Fiyat hücrelerini hem içerik hem biçim olarak temizlemek ve Durum sütununa bilgi yazmak istiyorsunuz. Alt+F11 ile VBA düzenleyicisini açın, Ekle > Modül (Insert > Module) ile standart modül ekleyin ve kodu yapıştırın.
VBA
14 satır
Option Explicit
Sub SifirStoklariTemizle()
Dim i As Long
With ActiveSheet
For i = 2 To 6
' Stok 0 ise A:C hücrelerini tamamen temizle
If .Cells(i, 2).Value = 0 Then
.Range(.Cells(i, 1), .Cells(i, 3)).Clear
.Cells(i, 4).Value = "Temizlendi"
End If
Next i
End With
End Sub
Range.Clear
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ürün | Stok | Birim Fiyat | Durum |
| 2 | Kalem | 12 | 8,50 | |
| 3 | Temizlendi | |||
| 4 | Silgi | 45 | 4,75 | |
| 5 | Temizlendi | |||
| 6 | Cetvel | 8 | 15,00 |
Stok ListesiExcelDepo v1.0.0
2. Clear ile ClearContents farkı
Aynı sayı biçimine sahip iki sütunu farklı yöntemlerle temizleyip hücrelerin sayı biçiminin ne olduğuna bakacaksınız. Gelir sütununda ClearContents, Gider sütununda Clear kullanılır; makro iki sütunun ilk hücresindeki NumberFormat değerini E sütununa yazar. Kodu standart modüle yapıştırın.
VBA
14 satır
Option Explicit
Sub ClearFarki()
With ActiveSheet
' Yalnızca değerleri sil, biçim kalsın
.Range("B2:B4").ClearContents
' Değer ve biçimi birlikte sil
.Range("C2:C4").Clear
' Her iki sütunun sayı biçimini E sütununa yaz
.Range("E2").Value = .Range("B2").NumberFormat
.Range("E3").Value = .Range("C2").NumberFormat
End With
End Sub
Range.Clear
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Ay | Gelir | Gider | Yöntem | Biçim |
| 2 | Ocak | Gelir: ClearContents | #,##0.00 | ||
| 3 | Şubat | Gider: Clear | General | ||
| 4 | Mart |
Tutar KarşılaştırmaExcelDepo v1.0.0
3. Dinamik aralığı temizleme
Rapor her ay farklı sayıda satır içerir. Makro A sütunundaki son dolu satırı bulur, başlık satırına dokunmadan A2 ile D sütununun son satırı arasını temizler ve temizlenen satır sayısını E2 hücresine yazar. Kodu standart modüle yapıştırın.
VBA
18 satır
Option Explicit
Sub RaporuTemizle()
Dim ws As Worksheet
Dim sonSatir As Long
Set ws = ActiveSheet
' A sütunundaki son dolu satırı bul
sonSatir = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If sonSatir >= 2 Then
' Başlık satırı hariç veri alanını temizle
ws.Range("A2:D" & sonSatir).Clear
ws.Range("E2").Value = sonSatir - 1
Else
ws.Range("E2").Value = 0
End If
End Sub
Range.Clear
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Şehir | Ürün | Adet | Tutar | Temizlenen Satır |
| 2 | 6 |
Satış RaporuExcelDepo v1.0.0
Kullanırken dikkat edin
- İşlem geri alınamaz: Makro içinden yapılan Clear işlemi Excel'in Geri Al (Undo) listesini de temizler. Önemli veriyi silmeden önce dosyanın yedeğini alın ya da aralığı önce başka bir sayfaya kopyalayın.
- Başlık biçimlerini kaybetmeyin: Clear yalnızca değerleri değil biçimleri de siler. Başlık satırı, sayı biçimleri ya da koşullu biçimlendirme korunacaksa veri alanına ClearContents uygulayın ve aralığa başlık satırını dahil etmeyin.
- Aralığı sayfayla birlikte belirtin: Başında sayfa adı olmayan Range("A1:D10").Clear ifadesi etkin sayfada çalışır. Makro başka bir sayfa etkinken çalışırsa yanlış sayfayı temizleyebilirsiniz. Güvenli olması için Worksheets("Rapor").Range(...) ya da bir Worksheet değişkeni kullanın.
- Korumalı sayfa ve birleşik hücreler: Korumalı sayfada kilitli hücreleri temizlemeye çalışmak 1004 numaralı çalışma zamanı hatasına yol açar; önce Unprotect yöntemiyle korumayı kaldırın. Birleştirilmiş bir hücrenin yalnızca bir kısmını kapsayan aralık da hata verebilir; aralığın birleşik alanın tamamını içerdiğinden emin olun.
- Excel tablolarında dikkatli olun: Tablo (ListObject) içindeki veriyi Clear ile temizlediğinizde satırlar silinmez, yalnızca boşalır ve tablo biçimi de bozulabilir. Satırları gerçekten kaldırmak için ListRows üzerinden ya da Range.Delete yöntemiyle silme yapın.
- İlgili konular:
- Range.ClearContents: Yalnızca değer ve formülleri siler.
- Range.ClearFormats: Yalnızca biçimleri siler.
- Range.ClearComments, Range.ClearNotes ve Range.ClearHyperlinks: Yorum, not ve köprüleri temizler.
- Range.Delete: Hücreleri siler ve komşu hücreleri kaydırır.
- Cells ve UsedRange: Tüm sayfayı ya da kullanılan alanı temizlerken aralığı belirlemek için kullanılır.
- End(xlUp): Son dolu satırı bulmak için kullanılır.
- Application.ScreenUpdating: Büyük temizleme işlemlerinde ekran titremesini önler.
- Giriş > Düzenleme > Temizle (Home > Editing > Clear): Arayüzdeki karşılığı.