VBA'da, Satır Sil komutunu kullanarak satır(lar)ı silebiliriz. İşin püf noktası, tek bir satırı silmemiz gerekirse tek bir satır referansı vermemiz, ancak birden fazla sütun için birden fazla satır referansı vermemizdir. Excel'de çalışan herkes için satır ve sütun eklemek ve silmek günlük bir iştir. Excel'de bu görevi hızlıca yapmak için kısayol tuşlarını kullanırız, ancak raporların otomasyonunu geliştirdiğimizde süreçte bazı satırları ortadan kaldırmamız gerekebilir.
Bu nedenle, VBA makro kodlaması yazdığımızda, satırın silinmesini kodda uygulamak önemlidir. Bunun bir parçası olarak, alternatif satırları silmemiz ve/veya belirli koşullara göre vb.
Bu eğitimde VBA kodunu kullanarak satırların nasıl silineceğini öğreneceğiz .
ÖNEMLİ NOKTALAR
- VBA Satır Sil kodunu kullanarak hücre değerine göre satırları silebiliriz.
- Bir satırın tamamını silmek, ROW veya RANGE Nesnesinin Entire Row özelliğini kullanarak mümkündür .
- Dolu boş satırları veya değerli hücreleri her N. satırda bir silebiliriz.
- Benzer şekilde, VBA satır silme komutunu kullanarak tüm yinelenen satırları da silebiliriz.
- Unutmayın, tek bir satırı silmek için tek satırlık referans, birden fazla satırı silmek için ise birden fazla satırlık referans vermeliyiz.
VBA'da Satır Nasıl Silinir ?
Excel VBA'da satırı silmek için önce satır numarasını belirtmemiz ve ardından tüm satır özelliğini seçip silme yöntemini seçmemiz gerekiyor.
Tüm satırı silmek için VBA kodu yazmak için aşağıdaki yöntemleri kullanın.
Adım 1: Excel kısayol tuşları ALT + F11'e basarak Visual Basic Düzenleyici penceresine gidin .
Adım 2: Makroyu Excel'de adlandırarak alt rutin prosedürünü başlatın .

Adım 3: ROW özelliğini yazın.

Adım 4: ROWS özelliği için çift tırnak işareti olmadan satır numarasını vermemiz gerekiyor. İstenilen satır numarasını aşağıdaki gibi sağlayın.

Adım 5: Verilen satır numarasıyla ne yapacağınıza karar vermek için noktayı girin. EntireRow özelliğini seçin .

Adım 6: EntireRow özelliğini seçtikten sonra metodu yani Delete metodunu seçmemiz gerekiyor .

1 numaralı satırda şu değer var.

Kodu çalıştıralım, 1 numaralı satırı silmesi lazım ve elimizde boş bir 1 numaralı satır olacak.

Görüldüğü gibi yazdığımız kod çalıştırıldığında 1 numaralı satır silindi.
Benzer şekilde aşağıdaki kodlar ilgili satır numaralarını silecektir.
Rows(4).EntireRow.Delete – Bu, 4 numaralı satırı siler.
Rows(8).EntireRow.Delete – Bu, 8 numaralı satırı siler.
Rows(20).EntireRow.Delete – Bu, 20 numaralı satırı siler.
Not: Satırların silinmesi
Örnekler
Örnek 1 – VBA Kullanarak Birden Fazla Satırı Silin
VBA kodunu kullanarak birden fazla satırı silebiliriz. Örneğin, bir Excel çalışma sayfasında aşağıdaki verilere sahibiz.

Yukarıdaki verilerden 3 ve 4 numaralı satırları silmemiz gerekiyor çünkü boş satırlarımız var.
Bu iki satırı silmek için VBA kodunda ROWS özelliğini açın.

Çift tırnak işaretini açın ve aşağıdaki gibi gerekli satır numaralarını girin.

Satır numaraları sağlandıktan sonra EntireRow özelliğini seçmemiz gerekiyor . Ancak ROWS özelliğiyle çalışırken, özellikleri ve yöntemleri seçmek için IntelliSense listesini görmeyeceğiz, bu da özellikle yeni öğrenenler için kodlamayı zorlaştırıyor.
IntelliSense listesini ele almanın alternatif yolunu göstereceğiz. Şimdilik, dot girin ve EntireRow özelliğini girin .

Şimdi bir nokta daha (.) ekleyip Delete metoduna giriyoruz .

Bu kodu çalıştırdığımızda 3 ve 4 numaralı satırlar silinecektir.

3 ve 4 numaralı satırları sildiğimizde, sonraki tüm satırlar yukarı kayar ve 5. ve 6. satırlar sırasıyla 3. ve 4. satırlar olur.
Satırları silerken dikkat etmemiz gereken nokta burasıdır.
IntelliSense Listesiyle Başa Çıkma
ROW özelliğini kullandığımızda, kod yazmamızda bize yardımcı olacak bir IntelliSense listesi alamıyorduk, bu yüzden ne kod yazdığımızdan kesinlikle emin olmamız gerekiyordu.
Ancak IntelliSense listesinin yardımını alabilmek için VBA Range nesnesini kullanmamız gerekiyor .
VBA kodlamasında Aralık nesnesini açın.

A3:A4 hücre adreslerini çift tırnak içine alın.

Hücre adreslerini girdikten sonra nokta (.) işaretini koyup tüm satırı yazmaya başlayın.

Gördüğümüz gibi, IntelliSense listesinin bizim için seçenekleri gösterdiğini görebiliriz. IntelliSense listesinden EntireRow özelliğini seçin.

Silme yöntemini seçmek için bir nokta daha girin.

Burada da IntelliSense listesini görebiliyoruz.
Silme metodunu seçtikten sonra aşağıdaki koda sahip olacağız.
Sub Delete_Multiple_Rows()
Satırlar(“3:4”).EntireRow.Delete
End Sub
Bu işlem 3 ve 4 numaralı satırları da silecektir.
Örnek 2 – Herhangi Bir Hücre Boşsa Satırı Silme
Yukarıdaki örnekte, yalnızca tüm satır boşsa satırların silindiğini gördük. Ancak, aşağıdaki verilere bir göz atın.

Tamamen boş bir satırın yanı sıra, 6. ve 10. satırlarda da boş hücrelerimiz var. Bir satırı silmek için, hücrelerden herhangi biri boşsa, farklı bir VBA satır silme tekniği gerekir.
Sub Delete_Rows_Cells_Empty()
Dim HeaderCount As Integer
Dim RowCount As Integer
Dim K As Integer
Dim LR As Integer
Dim Rng As Range
Dim RowNum As Integer
LR = Cells(Rows.Count, 1).End(xlUp).Row
HeaderCount = WorksheetFunction.CountA(Range(“B1:F1”))
For K = 2 To LR
RowCount = WorksheetFunction.CountA(Range(“B” & K & “:F” & K))
If RowCount < HeaderCount Then
Cells(K, 1).EntireRow.Delete
LR = Cells(Rows.Count, 1).End(xlUp).Row
K = K – 1
If K = LR Then Exit For
End If
Next K
End Sub
Aşağıdaki kod hücre sayısını ve başlık sayısını test edecektir. Hücre sayısı başlık sayısıyla uyuşmuyorsa, bu satırları silmemiz gerekir.
Yukarıdaki kod, B'den F'ye kadar olan sütunlardaki başlık hücrelerinin sayısını kontrol edecek ve her satırda döngüye girecek ve döngü hücre satırının sayısını bulacaktır. Herhangi bir boş hücre gelirse, sayı daha az olacaktır, böylece hücrenin tüm satırı silinecektir.
Örnek 3 – Tüm Satır Boşsa Bir Satırı Silme
Veri aralığındaki boş satırları silmek yaygın görevlerden biridir. Örneğin, Excel'deki aşağıdaki verilere bakın.

Veri tablosunda boş satırlar var ve bu satırları VBA koduyla silmemiz gerekiyor. Aşağıda açıklanan adımları izleyin.
Adım 1: Makroya isim vererek alt programı başlatın.

Adım 2: RANGE nesnesini girin ve A1:F12'den itibaren tam veri aralığını sağlayın.

Adım 3: Burada, hangi satırların gerçekten boş olduğundan emin olmadığımız için hiçbir satırı hedeflemiyoruz. Bu nedenle, bunu yapmak için Özel Hücre yöntemini seçmemiz gerekiyor.

Adım 4: Özel hücreler yöntemini seçtikten sonra parantezi açalım ve özel hücrelerin çeşitli özelliklerini görelim.

Adım 5: Çeşitli hücre tiplerinden xlCellTypeBlanks öğesini seçin .

Adım 6: Bir nokta daha girin ve silme yöntemini seçin.

Tamamlanmış kod aşağıdaki kutudadır.
Sub Delete_Empty_Rows()
Range(“A1:F12”).SpecialCells(xlCellTypeBlanks).Delete
End Sub
Yukarıdaki kodu çalıştırdığımızda, A1:F12 aralığındaki tüm boş satırlar silinecek ve aşağıdaki veri tablosu elde edilecektir.

Örnek 4 – Her N'inci Satırı Silme
Her N'inci satırı silmek için aşağıdaki verilere bakın.

Yukarıdaki verilerde her tek satırın yanında boş bir satır var, dolayısıyla aşağıdaki kodu kullanarak tüm tek satırları silebiliriz.
Sub Delete_Every_Nth_Rows()
Dim K As Integer
Dim LR As Integer
Dim Rng As Range
LR = Cells(Rows.Count, 1).End(xlUp).Row + 1
For K = LR To 2 Step -2
If K Mod 2 <> 0 Then
Cells(K, 1).EntireRow.Delete
End If
Next K
End Sub
Bu, tüm tek satırları silecek ve aşağıdaki temizlenmiş veri tablosunu verecektir.

Örnek 5 – Hücre Değerine Göre Satır Silme
Hücre değerine göre satırları silmek, veri analizinde temel görevlerden biridir. Örneğin, Excel'deki aşağıdaki verilere bakın.

Uçuş adı ve varış durumu Evet veya Hayır olarak bizde mevcut.
"Hayır" durumuna sahip tüm satırları silmemiz gerekiyor. Aşağıdaki kod "Hayır" değerine sahip tüm satırları silecektir.
Sub Delete_Rows_With_Specific_Value()
Dim K As Integer
Dim LR As Integer
LR = Cells(Rows.Count, 1).End(xlUp).Row
For K = LR To 2 Step -1
If Cells(K, 2).Value = “No” Then
Cells(K, 2).EntireRow.Delete
End If
Next K
End Sub
Yukarıdaki kod, veri aralığındaki tüm hücrelerde döngüye girecek ve durum sütunundaki değeri kontrol edecektir. Durum sütunu "Hayır" ise, o satırı silecektir.
Örnek 6 – Yinelenen Satırları Silme
Yinelenen satırları silmek günlük bir gerekliliktir. Örneğin, Excel'deki aşağıdaki verilere bakın.

Aşağıdaki kodu kullanarak yinelenen satırlardan kurtulabiliriz.
Sub Delete_Duplicate_Rows()
Dim Rng As Range
Set Rng = Range(“A1:B8”)
Rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub
Yukarıdaki kod tüm yinelenen satırları kaldıracaktır.
Örnek 7 – Herhangi Bir Dize İçeren Satırları Silme
Bu en kolay yöntemdir çünkü burada herhangi bir mantık veya kriteri test etmiyoruz, sadece herhangi bir dizeye sahip satırı silmek istiyoruz.
VBA CELLS Özelliğini veya RANGE nesnesini kullanarak silmek istediğimiz satırları belirtmemiz yeterli .
Örneğin 1'den 10'a kadar olan satırları silmek istiyorsak satırları aşağıdaki gibi belirtmemiz gerekiyor.
Aralık(“A:A10”).TümSatır.Sil
Bu, 1'den 10'a kadar olan tüm satırları silecektir.
Örnek 8 – Tarihlere Göre Satır Silme
Tarihli verilerle çalıştığımızda, tarih değerine göre satırları silmemiz gerekebilir. Örneğin, Excel'de aşağıdaki verilere sahibiz.

Her poliçe için poliçe numarası ve vade tarihimiz var. Vade tarihi BUGÜN'den azsa, vade tarihine göre satırları silmemiz gerekir, o zaman o satırı silmemiz gerekir.
Aşağıdaki kod referans amaçlıdır.
Sub Delete_Rows_Date()
Dim K As Integer
Dim LR As Integer
LR = Cells(Rows.Count, 1).End(xlUp).Row
For K = LR To 2 Step -1
If Cells(K, 2).Value < Now() Then
Cells(K, 2).EntireRow.Delete
End If
Next K
End Sub
Yukarıdaki kod tüm veri hücrelerinde döngüye girecek ve tarih değeri BUGÜN tarihinden küçük olan satırları silecektir.
Dikkat Edilmesi Gereken Önemli Noktalar
- Excel'de VBA Satır Sil komutunu kullanarak tek bir satırı veya satırları silebiliriz.
- ROWS özelliği ile IntelliSense listesine erişim sağlayamayacağız.
- Satırları silerken birden fazla değişken kullanma zahmetini azaltacaktır.
- VBA Satırları Sil'de Adım -1, her döngü çalıştıktan sonra döngünün otomatik olarak -1'e düşmesi anlamına gelir.
- Küçük bir boşluk karakteri bile hücreyi boş veya boş yapmaz.
- Tek bir hücreye başvurduğumuzda silme işleminin tüm satır için geçerli olması için tüm satır özelliğini seçmemiz gerekir.
Filtre uygulandığında satırları silmek için, özel hücreler yöntemini kullanmamız ve bu yöntemden xlCellTypeVisible'ı
kullanmamız gerekir. Örneğin, filtre uygulandığında A1:F10 aralığındaki satırları silmek için aşağıdaki kod yalnızca görünür satırları silecektir.
Range(“A1:F10”).SpecialCells(xlCellTypeVisible).Delete
Örneğin Excel'deki aşağıdaki verilere bakalım.
Eğer “Old” değerine sahip satırları silmek istiyorsak aşağıdaki kodu kullanabiliriz.
Bir hücredeki belirli bir metni içeren satırı silmek istiyorsanız, aşağıdaki kodu kullanabiliriz. Aşağıdaki kod, "Hayır" olan her yerdeki satırları silecektir.
