Genel Bakış
Range.ClearComments (Range.ClearComments method), bir Range nesnesindeki hücrelere bağlı notları (cell comments) topluca siler. Hücrenin değerine, formülüne ve biçimine dokunmaz; yalnızca not simgesiyle gelen açıklama kutusunu kaldırır. Elle yapılan Gözden Geçir > Notlar > Sil (Review > Notes > Delete) işleminin VBA karşılığıdır.
Aralıkta hiç not yoksa hata oluşmaz; yöntem sessizce geçer. Birleştirilmiş hücrelerde aralığın tamamını verdiğinizde not yine silinir.
Yeni Excel sürümlerinde iki tür açıklama vardır: klasik notlar ve iş parçacıklı yorumlar (threaded comments). Klasik notlar Comment ve Comments ile, iş parçacıklı yorumlar CommentThreaded ve CommentsThreaded ile yönetilir. İş parçacıklı yorumlar içeren dosyalarda sonucu önce kopya üzerinde deneyin.
Silinecek aralığı doğru seçmek önemlidir: Cells.ClearComments sayfadaki tüm notları, Range("B2:B6").ClearComments ise yalnızca belirtilen hücrelerdekileri siler.
Makro çalışmadan önce sayfada 5 not bulunur; ClearComments sonrasında kalan not sayısı 0 olur. Tutar sütunundaki değerler ve sayı biçimi olduğu gibi kalır; yalnızca notlar kaldırılmıştır.
Teslim edilmiş siparişlerde (SP-1001, SP-1003 ve SP-1006) not silindiği için D sütunu Not yok, Not yok ve Not yok sonucunu verir. Yolda ya da hazırlanan siparişlerde not korunur; örneğin D3 hücresi Not var değerini gösterir. Böylece ClearComments yöntemini tek hücreye ve koşula bağlı olarak da uygulayabildiğinizi görürsünüz.
Makro bittiğinde D2 hücresi 0 değerini gösterir; yani sayfada hiç not kalmamıştır. Satış değerleri ve formüller etkilenmez: C2 hücresi hala 1.440,00, C3 hücresi 1.740,00 sonucunu verir. Bu, ClearComments yönteminin hücre içeriğini değil yalnızca notları sildiğini gösterir.
Söz dizimi
Yöntem parametre almaz ve değer döndürmez. Bir Range ifadesinin sonuna eklenir:ifade.ClearComments
- ifade: Zorunlu. Bir Range nesnesi döndüren ifade; örneğin Range("B2:B6"), Cells, Selection ya da UsedRange.
- Parametre: Yoktur. Yöntem, aralıktaki tüm notları siler; belirli bir notu seçmek için aralığı daraltmanız gerekir.
- Dönüş değeri: Yoktur; yöntem bir işlem yapar ve sonuç üretmez.
Ne siler, ne silmez
ClearComments yalnızca aralıktaki hücrelere bağlı notları kaldırır. Hücre içeriği, sayı biçimi, dolgu rengi ve kenarlıklar yerinde kalır. Bu nedenle ClearContents (değerleri siler, notları korur), ClearFormats (biçimleri siler) ve Clear (her şeyi siler) yöntemlerinden ayrılır.Aralıkta hiç not yoksa hata oluşmaz; yöntem sessizce geçer. Birleştirilmiş hücrelerde aralığın tamamını verdiğinizde not yine silinir.
Yeni Excel sürümlerinde iki tür açıklama vardır: klasik notlar ve iş parçacıklı yorumlar (threaded comments). Klasik notlar Comment ve Comments ile, iş parçacıklı yorumlar CommentThreaded ve CommentsThreaded ile yönetilir. İş parçacıklı yorumlar içeren dosyalarda sonucu önce kopya üzerinde deneyin.
Notların sayısını ve varlığını denetleme
Silmeden önce ya da sonra durumu denetlemek için iki yol kullanılır. Tek bir hücrede not olup olmadığını Range.Comment özelliğinin Nothing olup olmadığına bakarak anlarsınız. Sayfadaki toplam not sayısını ise Worksheet.Comments.Count verir.
VBA
4 satır
If Range("A2").Comment Is Nothing Then
' Hücrede not yok
End If
MsgBox ActiveSheet.Comments.Count
1. Bir aralıktaki tüm notları silme
Sayfada müşteri ve tutar listesi var. Makro önce B2:B6 hücrelerine not ekler, not sayısını C2 hücresine yazar, B2:B6 aralığındaki notları ClearComments ile siler ve kalan not sayısını D2 hücresine yazar. Kodu standart bir modüle (Ekle > Modül) yapıştırın.
VBA
24 satır
Option Explicit
Sub NotlariTemizle()
Dim ws As Worksheet
Dim r As Long
Set ws = ThisWorkbook.Worksheets("Not Temizleme")
' Önce B2:B6 hücrelerine not ekle
For r = 2 To 6
If ws.Cells(r, 2).Comment Is Nothing Then
ws.Cells(r, 2).AddComment "Ödeme koşulu kontrol edilecek"
End If
Next r
' Silmeden önceki not sayısı
ws.Range("C2").Value = ws.Comments.Count
' B2:B6 aralığındaki notları sil
ws.Range("B2:B6").ClearComments
' Silindikten sonraki not sayısı
ws.Range("D2").Value = ws.Comments.Count
End Sub
Range.ClearComments
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Müşteri | Tutar | Önceki Not Sayısı | Sonraki Not Sayısı |
| 2 | Ahmet Yılmaz | 12.500,00 | 5 | 0 |
| 3 | Ayşe Kaya | 8.400,00 | ||
| 4 | Mehmet Demir | 15.200,00 | ||
| 5 | Fatma Şahin | 6.750,00 | ||
| 6 | Ali Çelik | 9.900,00 |
Not TemizlemeExcelDepo v1.0.0
2. Koşula bağlı olarak yalnızca bazı notları silme
Her siparişin A sütunundaki hücresine sevkiyat notu eklenir. Durumu "Teslim Edildi" olan satırların notları gereksiz olduğundan yalnızca onlar silinir. D sütununa her satırın not durumu yazılır. Kodu standart bir modüle yapıştırın.
VBA
27 satır
Option Explicit
Sub TeslimEdilenNotlariSil()
Dim ws As Worksheet
Dim r As Long
Set ws = ThisWorkbook.Worksheets("Sevkiyat Takibi")
For r = 2 To 7
' Her siparişe sevkiyat notu ekle
If ws.Cells(r, 1).Comment Is Nothing Then
ws.Cells(r, 1).AddComment "Sevkiyat bilgisi gözden geçirildi"
End If
' Teslim edilmiş siparişin notunu sil
If ws.Cells(r, 3).Value = "Teslim Edildi" Then
ws.Cells(r, 1).ClearComments
End If
' Not durumunu D sütununa yaz
If ws.Cells(r, 1).Comment Is Nothing Then
ws.Cells(r, 4).Value = "Not yok"
Else
ws.Cells(r, 4).Value = "Not var"
End If
Next r
End Sub
Range.ClearComments
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Sipariş No | Müşteri | Durum | Not Durumu |
| 2 | SP-1001 | Ahmet Yılmaz | Teslim Edildi | Not yok |
| 3 | SP-1002 | Ayşe Kaya | Yolda | Not var |
| 4 | SP-1003 | Mehmet Demir | Teslim Edildi | Not yok |
| 5 | SP-1004 | Fatma Şahin | Hazırlanıyor | Not var |
| 6 | SP-1005 | Ali Çelik | Yolda | Not var |
| 7 | SP-1006 | Zeynep Arslan | Teslim Edildi | Not yok |
Sevkiyat TakibiExcelDepo v1.0.0
3. Tüm sayfadaki notları silip değerlerin korunduğunu görme
Aylık satış tablosunda KDV'li tutar bir formülle hesaplanır. Makro B2:B4 hücrelerine not ekler, ardından Cells.ClearComments ile sayfadaki tüm notları siler ve D2 hücresine kalan not sayısını yazar. Kodu standart bir modüle yapıştırın.
VBA
21 satır
Option Explicit
Sub TumSayfadaNotSil()
Dim ws As Worksheet
Dim r As Long
Set ws = ThisWorkbook.Worksheets("Aylık Satışlar")
' Satış hücrelerine düzeltme notu ekle
For r = 2 To 4
If ws.Cells(r, 2).Comment Is Nothing Then
ws.Cells(r, 2).AddComment "Düzeltme: " & ws.Cells(r, 1).Value
End If
Next r
' Sayfadaki tüm notları sil
ws.Cells.ClearComments
' Kalan not sayısını yaz
ws.Range("D2").Value = ws.Comments.Count
End Sub
Range.ClearComments
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ay | Satış | KDV'li Tutar | Kalan Not |
| 2 | Ocak | 1.200,00 | 1.440,00 | 0 |
| 3 | Şubat | 1.450,00 | 1.740,00 | |
| 4 | Mart | 980,00 | 1.176,00 |
Aylık SatışlarExcelDepo v1.0.0
Kullanırken dikkat edin
- Silinen notlar geri alınamaz: Makro ile yapılan silme işlemi Geri Al (Undo) listesine girmez. Önemli notların bulunduğu dosyada çalıştırmadan önce dosyanın bir kopyasını alın ya da aralığı dikkatle sınırlayın.
- Aralığı doğru seçin: Cells.ClearComments sayfadaki tüm notları siler. Yalnızca belirli bir tabloyu temizlemek istiyorsanız Range("A2:D50") gibi sınırlı bir aralık kullanın. Selection.ClearComments ise seçili hücrelere göre çalıştığı için makroyu başka bir sayfadayken çalıştırırsanız beklenmedik hücreleri etkileyebilir.
- Not ile iş parçacıklı yorum farkı: Yeni Excel sürümlerinde klasik notlar ile iş parçacıklı yorumlar ayrı nesnelerdir. ClearComments klasik notlar için tasarlanmıştır; iş parçacıklı yorumların nasıl etkilendiği sürüme göre değişebilir. Bu tür yorumlar için CommentThreaded.Delete yöntemini ayrıca deneyin ve sonucu kopya dosyada doğrulayın.
- Korumalı sayfalarda hata alırsınız: Sayfa korumalıysa ve nesneleri düzenleme izni verilmemişse yöntem hata verir. Önce Unprotect ile korumayı kaldırın, notları silin, ardından Protect ile korumayı yeniden açın.
- Not yoksa hata oluşmaz: Aralıkta hiç not bulunmaması hata nedeni değildir. Buna karşılık tek bir hücrenin Comment özelliğine not yokken doğrudan .Text ile erişirseniz hata alırsınız; önce Is Nothing denetimi yapın.
- İlgili konular:
- Range.AddComment: hücreye yeni not ekler.
- Range.Comment: tek hücredeki notu temsil eder.
- Worksheet.Comments: sayfadaki tüm notların koleksiyonudur.
- Comment.Delete: tek bir notu siler.
- Range.ClearContents: değerleri siler, notları korur.
- Range.ClearFormats: biçimleri siler.
- Range.Clear: içerik, biçim ve notların tümünü siler.
- Range.CommentThreaded: iş parçacıklı yorumlara erişim sağlar.