Özellik ikonu

Delete

İndirme izni yok

Genel Bakış

Delete (Sil), Excel VBA'da bir hücre aralığını, çalışma sayfasını, şekli, adı ve benzeri nesneleri nesnenin kendisiyle birlikte kaldıran yöntemdir. Hücre aralıklarında komşu hücreleri kaydırarak boşluğu kapatır; içeriği silip hücreyi yerinde bırakan Clear ve ClearContents yöntemlerinden bu yönüyle ayrılır. Silme işlemi geri alınamadığı için kodda dikkatli kullanılmalıdır.

Söz dizimi​

Delete yöntemi, üzerinde çağrıldığı nesneye göre iki biçimde kullanılır. Hücre aralıkları için Shift bağımsız değişkeni vardır, diğer nesnelerde ise parametre almaz:
VBA 2 satır
ifade.Delete(Shift)   ' Range nesnesi için
ifade.Delete            ' Worksheet, Shape, Comment, Name vb. için
  • ifade: Silinecek nesne; örneğin Range, Worksheet, Shape, ChartObject, Comment, Name, ListRow, ListColumn. Zorunludur.
  • Shift: Yalnızca Range.Delete için geçerlidir; silinen hücrelerin yerini dolduracak kaydırma yönünü belirler. İsteğe bağlıdır. Verilmezse Excel şekle göre kendisi karar verir: aralık yatay ise sola, değilse yukarı kaydırır. Tam satır ya da tam sütun silinirken kullanılmaz.
Bu yöntem genellikle bir deyim gibi çağrılır; dönüş değeri kullanılmaz.

Shift sabitleri ve kullanım alanları​

Shift için kullanabileceğiniz XlDeleteShiftDirection sabitleri şunlardır:
  • xlShiftUp: Silinen hücrelerin altındaki hücreler yukarı kayar (sayısal değeri -4162).
  • xlShiftToLeft: Silinen hücrelerin sağındaki hücreler sola kayar (sayısal değeri -4159).
Delete yöntemini şu nesnelerde kullanabilirsiniz:
  • Range: Hücre, satır ya da sütun silme. Tam satır için Rows(5).Delete ya da Range("A5").EntireRow.Delete yazılır.
  • Worksheet: Çalışma sayfasını siler. Excel varsayılan olarak onay sorar.
  • Shape, ChartObject, Comment, Name, ListRow, ListColumn: İlgili nesneyi kaldırır.
Arayüzdeki karşılığı Giriş > Hücreler > Sil (Home > Cells > Delete) komutudur.

Delete, Clear ve ClearContents farkı​

Üç yöntem de hücreleri temizler gibi görünse de sonuçları farklıdır:
  • Delete: Hücreyi yapısından çıkarır; sağdaki ya da alttaki hücreler kayarak boşluğu doldurur. Formüllerdeki başvurular etkilenir, silinen hücreye başvuranlar #BAŞV! (#REF!) hatası verir.
  • ClearContents: Yalnızca değeri ve formülü siler; biçim ve hücre konumu aynı kalır.
  • Clear: Değer, biçim, not ve diğer her şeyi temizler, ama hücreleri kaydırmaz.
Yalnızca veriyi boşaltmak istiyorsanız ClearContents çok daha güvenlidir.

1. İptal edilen sipariş satırlarını silme​

Sipariş listesinde Durum sütunu İptal olan satırları silmek istiyorsunuz. Aşağıdaki kodu standart bir modüle yapıştırın. Döngü, satır silindiğinde numaraların kaymaması için son satırdan başa doğru çalışır.
VBA 18 satır
Option Explicit

Sub IptalSatirlariniSil()
    Dim ws As Worksheet
    Dim i As Long
    Dim son As Long

    Set ws = ActiveSheet
    ' A sütunundaki son dolu satırı bulur
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Sondan başa doğru gidilir; böylece silinen satır sıradakini etkilemez
    For i = son To 2 Step -1
        If ws.Cells(i, 5).Value = "İptal" Then
            ws.Rows(i).Delete
        End If
    Next i
End Sub
Delete
Formülünü incelemek için bir hücre seçin.
ABCDE
1Sipariş NoÜrünŞehirTutarDurum
2S-101LaptopAnkara24.500,00Tamam
3S-103MonitörBursa6.800,00Tamam
4S-105TabletKonya9.300,00Beklemede
5S-107TelefonTrabzon15.800,00Tamam
Sipariş ListesiExcelDepo v1.0.0
Makro çalıştıktan sonra Durum sütununda İptal yazan üç satır tamamen silinir; altındaki satırlar yukarı kayar ve listede boş satır kalmaz. Döngüyü baştan sona yazarsanız her silmeden sonra sıradaki satır bir yukarı kayacağı için bazı iptal satırları atlanır.

2. Hücre aralığını Shift ile silme​

Personel tablosunda Not sütununun yalnızca iki hücresini (C3:C4) silip sağdaki Maaş değerlerinin sola kaymasını istiyorsunuz. Kodu standart bir modüle yapıştırın. Sonuçta tablonun hizası bozulur; bu, kısmi aralık silmenin etkisini gösterir.
VBA 9 satır
Option Explicit

Sub NotHucreleriniSil()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ' C3:C4 silinir, sağdaki hücreler sola kayar
    ws.Range("C3:C4").Delete Shift:=xlToLeft
End Sub
Delete
Formülünü incelemek için bir hücre seçin.
ABCD
1PersonelBölümNotMaaş
2Ayşe YılmazMuhasebeYeni32.000,00
3Mehmet DemirSatış28.500,00
4Fatma KayaÜretim26.750,00
5Ali ÇelikLojistikYeni30.200,00
Personel NotlarıExcelDepo v1.0.0
C3 ve C4 hücreleri silindiğinde aynı satırlardaki Maaş değerleri C sütununa kayar ve D3:D4 boşalır. Diğer satırlarda Maaş D sütununda kaldığı için tablo hizasız görünür. Bu yüzden tabloların bir parçasını Shift ile silerken yalnızca bütün satırı ya da bütün sütunu silmeyi tercih edin; hücre aralığında silme yaparken kaymanın komşu verileri nasıl etkileyeceğini önceden düşünün.

3. Çalışma sayfasını onaysız silme​

Makro geçici bir sayfa ekler, sonra bu sayfayı siler. Excel'in onay penceresini kapatmak için DisplayAlerts özelliği geçici olarak False yapılır ve hemen True değerine döndürülür. Kodu standart bir modüle yapıştırın; sonuçlar örnek sayfanın B sütununa yazılır.
VBA 29 satır
Option Explicit

Sub GeciciSayfaSil()
    Dim ws As Worksheet
    Dim gecici As Worksheet

    ' Sonuçların yazılacağı sayfa, Add işleminden önce saklanır
    Set ws = ActiveSheet

    Set gecici = ThisWorkbook.Worksheets.Add
    gecici.Name = "Gecici"

    ' Onay penceresini kapat, sayfayı sil, uyarıları tekrar aç
    Application.DisplayAlerts = False
    gecici.Delete
    Application.DisplayAlerts = True

    ws.Activate
    ws.Range("B2").Value = ThisWorkbook.Worksheets.Count
    ws.Range("B3").Value = SayfaVarMi("Gecici")
End Sub

Function SayfaVarMi(ad As String) As Boolean
    Dim s As Worksheet
    SayfaVarMi = False
    For Each s In ThisWorkbook.Worksheets
        If s.Name = ad Then SayfaVarMi = True
    Next s
End Function
Delete
Formülünü incelemek için bir hücre seçin.
AB
1KontrolSonuç
2Silme sonrası sayfa sayısı3
3Gecici sayfa duruyor muYANLIŞ
Sayfa KontrolExcelDepo v1.0.0
Makro, Gecici adlı sayfayı ekleyip siler. Silme sonrasında çalışma kitabındaki sayfa sayısı 3 olarak yazılır; Gecici sayfasının hala var olup olmadığını gösteren kontrol sonucu ise YANLIŞ değeridir. DisplayAlerts özelliğini silme işleminden hemen sonra True yaparak Excel'in sonraki uyarılarının kapalı kalmasını önlemiş olursunuz.

Kullanırken dikkat edin​

  • Silme geri alınamaz: VBA ile yapılan silme işlemleri Ctrl+Z ile geri alınamaz; makro çalışınca Geri Al yığını da temizlenir. Önemli dosyalarda makroyu çalıştırmadan önce çalışma kitabının yedeğini alın.
  • Döngüde silerken sondan başa gidin: Satır ya da sütun silen döngülerde sayacı Step -1 ile sondan başa doğru ilerletin. Baştan sona giderseniz silinen satırın yerine gelen satır atlanır.
  • DisplayAlerts ayarını geri açın: Sayfa silerken onay penceresini kapatmak için Application.DisplayAlerts = False yazılır. İşlem bitince mutlaka True yapın. Aksi durumda sonraki işlemlerde Excel uyarı vermez ve beklenmedik silmeler sessizce gerçekleşebilir. Kodda hata oluşma ihtimali varsa True ataması hata yakalama bölümünde de bulunmalıdır.
  • Silinemeyen durumlar: Çalışma kitabındaki son görünür sayfa silinemez; en az bir görünür sayfa kalmalıdır. Korumalı sayfalarda ve korumalı hücre aralıklarında silme hata verir. Çalışma kitabı yapısı korumalıysa sayfa silinemez. Tabloların (ListObject) tam satırını silerken tablo dışındaki hücrelerin de etkilendiğini unutmayın.
  • Formüllere etkisi: Silinen hücrelere başvuran formüller #BAŞV! (#REF!) hatası verir. Hücreyi kaydırmadan yalnızca değerini boşaltmak istiyorsanız ClearContents yöntemini kullanın.
  • İlgili konular:
    • Clear: Hücredeki her şeyi kaydırmadan temizler.
    • ClearContents: Yalnızca değerleri ve formülleri temizler.
    • Insert: Hücre, satır ya da sütun ekleyen karşıt yöntem.
    • EntireRow ve EntireColumn: Tam satır ve sütun silmek için kullanılan özellikler.
    • Application.DisplayAlerts: Excel uyarılarını açıp kapatan özellik.
    • Worksheets.Add: Yeni çalışma sayfası ekleyen yöntem.
    • SpecialCells: Boş ya da hatalı hücreleri bulup toplu silmeye yarar.
    • EĞERSAY (COUNTIF) ve SATIRSAY (ROWS): Silme öncesi kontrol amacıyla kullanılabilecek işlevler.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
12
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst