Bir örneğe bakalım. Bu örnekte, “InsertRowWithValues” adlı bir makro, bir Excel çalışma sayfasındaki son kullanılan satırın altına VBA Insert Row kullanır. Makro, yeni satırı bir diziden belirli değerler olan “John,” “Doe,” “25,” ve “Engineer” ile doldurur. Çalıştırıldığında, makro satırı dinamik olarak ekler ve önceden tanımlanmış değerlerle doldurur.

Çıktı, aşağıda görüldüğü gibi çalışma sayfasındaki son kullanılan satırın altına eklenen "John", "Doe", "25" ve "Engineer" değerlerine sahip yeni bir satırdır.

- VBA, bir Excel çalışma sayfasına satır eklemek için çeşitli stratejiler sağlar; örneğin, Ekleme yöntemi, EntireRow özelliği, satır numaraları, etkin hücre ve etkin hücreyle Ofset işlevi gibi.
- VBA'da döngü kullanarak alternatif satırlar ekleyebilirsiniz.
- Özellikle dinamik değerlerle satır eklerken hata yönetimi çok önemlidir.
- Yeni bir satır eklerken mevcut satırlar aşağı doğru hareket eder ve böylece hiçbir verinin üzerine yazılmaz.
Excel VBA'da Satır Nasıl Eklenir? (Adımlar ve örneklerle)
VBA Satır Ekleme için beş yöntem şunlardır:
Yöntem 1 – Ekleme Yöntemini Kullanma
Örnek – Veri Girişinde Yeni Satırın Otomatik Olarak Eklenmesi
Diyelim ki Excel'de bir veri girişi formunuz var ve her yeni veri noktası girildiğinde son girişin üstüne otomatik olarak bir VBA Satır Ekle kodlamak istiyorsunuz.
Adım 1: Yeni bir Excel çalışma kitabında, Excel'de “ALT + F11” tuşlarına basarak Visual Basic for Applications (VBA) düzenleyicisini açın.

Adım 2: VBA Editör'de kodunuzu yazmak için yeni bir modül oluşturursunuz. Bu, menüden Ekle'yi seçip ardından Modül'ü seçerek yapılabilir.

Adım 3: Yeni modülde, “AutoInsertRowUsingInsertMethod()” adlı yeni bir alt rutin oluşturarak başlayın.

Adım 4: Daha sonra, “Long” veri türünde “lastRow” adlı bir değişken tanımlıyoruz. Long değişkeni tam sayıları depolamak için kullanılır.

Adım 5: Burada, Sütun A'daki son kullanılan satırı bulan bu kodu kullanıyoruz (verilerin Sütun A'da başladığını varsayarak). Çalışma sayfasındaki toplam satır sayısını sayar (Rows.Count), sonra son satırdan başlar ve Sütun A'daki ilk boş olmayan hücreyle karşılaşana kadar yukarı doğru hareket eder (End(xlUp)). Son boş olmayan hücrenin satır numarası "lastRow" değişkeninde saklanır.

Adım 6: Bu satırda, “lastRow” değişkeninin temsil ettiği satırda Insert metodu çağrılır ve A Sütununda son kullanılan satırın hemen üstüne yeni bir satır eklenir.

Adım 7: Makroyu kaydedin ve VBE düzenleyicisini kapatın. “Makro” iletişim kutusunu açmak için “ALT + F8” tuşlarına basın.
Listeden “AutoInsertRowUsingInsertMethod” makrosunu seçin ve “Çalıştır”a tıklayın.

Adım 8: Kodu çalıştırdığınızda, VBA satır ekleme işleminin tetiklendiğini ve son kullanılan satırın hemen üzerine yeni bir satırın (yani Satır 20'nin) eklendiğini göreceksiniz.

İşte kodun tamamı:
Sub AutoInsertRowUsingInsertMethod()
Dim lastRow As Long
' Çalışma sayfasında kullanılan son satırı bul
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' Son kullanılan satırın altına yeni bir satır ekle
Rows(lastRow).Insert
End Sub
Yöntem 2 – Tüm Satır Özelliğini Kullanma
Örnek – Kategorize Edilmiş Veriler İçin Birden Fazla Satır Ekleme
Diyelim ki Excel'de bir gider listeniz var.

Ve VBA Satır Ekle özelliğini kullanarak her kategori için ek ayrıntılar sağlamak üzere birden fazla satır eklemek istiyorsunuz.
Adım 1: Yeni modülde “InsertMultipleRowsForEachCategory” adında bir alt rutin oluşturun.

Adım 2: Aşağıdaki satırda, “Long” veri türünde “categoryRow” adlı bir değişken bildiriyoruz. Long değişkeni tam sayıları depolamak için kullanılır. Bu değişken, her kategorinin listelendiği satır numarasını izleyecektir.

Adım 3: Burada, “Long” veri türünde “i” adlı bir değişken tanımlıyoruz. “i” değişkeni, her kategori için birden fazla satır eklemek için bir döngü sayacı olarak kullanılacak.

Adım 4: Bir sonraki satırda “categoryRow = 1” atıyoruz. Bu satır “categoryRow” değişkenini 1 değeriyle başlatır. Kategorilerin Sütun A'daki 1. satırdan başlayarak listelendiğini varsayar.

Adım 5: Şimdi, “numRowsToInsert” adında bir değişken tanımlayıp ona 3 değerini atayacağız. Bu, her kategori için üç satır eklemek istediğimiz anlamına geliyor.

Adım 6: Bu kod satırında “Do While” VBA döngüsünü kullanıyoruz . Bu satır, Sütun A'da (kategorilerin sonu) boş bir hücreyle karşılaşana kadar bir “Do While” döngüsü başlatır.

Adım 7: i = 1 için numRowsToInsert: Bu satır, 1'den "numRowsToInsert" değerine (ki bu 3'tür) kadar yineleme yapan bir "For" döngüsü başlatır. Bu döngü, her kategori için üç satır ekleyecektir.

Adım 8: Bu satırda, “categoryRow + 1” ile gösterilen satırda, geçerli kategori satırının (categoryRow) altına yeni bir satır ekleyen Insert yöntemi çağrılır. Aynı kategori için ek satırlar oluşturur.

Adım 9: Bu satır, bir sonraki kategori satırına geçmek için “categoryRow” değişkenini günceller. Bir sonraki kategori satırına atlamak için “numRowsToInsert” değerini ve 1 değerini ekler (geçerli kategori için son eklenen satırın bir satır altı).

Adım 10: Bu satır “Do While” döngüsünün sonunu gösterir. Döngü, Sütun A'da boş bir hücreye rastlanana kadar tekrarlanacaktır.

Adım 11: Makroyu kaydedin ve VBE düzenleyicisini kapatın. “Makro” iletişim kutusunu açmak için “ALT + F8” tuşlarına basın.
Listeden “InsertMultipleRowsForEachCategory” makrosunu seçin ve “Çalıştır”a tıklayın.

Adım 12: VBA kodunu çalıştırdığınızda , mevcut olan her gider kalemi için yeni satırların eklendiğini göreceksiniz.

İşte kodun tamamı:
Sub InsertMultipleRowsForEachCategory()
Dim categoryRow As Long
Dim i As Long
Dim numRowsToInsert As Long
' Kategorilerin A sütununda başladığını ve verilerin B sütununda başladığını varsayalım
categoryRow = 1
numRowsToInsert = 3 ' Her kategori için 3 satır ekle
Do While Cells(categoryRow, 1).Value <> “”
For i = 1 To numRowsToInsert
Rows(categoryRow + 1).Insert
Next i
categoryRow = categoryRow + numRowsToInsert + 1 ' Bir sonraki kategoriye git
Loop
End Sub
Yöntem 3 – Satır Numaralarını Kullanma
Örnek – Veri Tablosunun Sonuna Yeni Bir Satır Ekleme
Diyelim ki Excel'de bir veri tablonuz var ve VBA Insert Row Below komutuyla en son verileri girmek istiyorsunuz.

Adım 1: Yeni modülde “InsertRowAtEndOfDataTable” adında bir alt rutin oluşturun.

Adım 2: Bir sonraki satırda, “Long” veri tipinde “lastRow” adlı bir değişken tanımlıyoruz. Long değişkeni tam sayıları depolamak için kullanılır.

Adım 3: Daha sonra, “Long” veri türünde “newRow” adlı başka bir değişken tanımlayacağız. “newRow” değişkeni, yeni satırın eklenmesi için satır numarasını saklayacaktır.

Adım 4: “lastRow = Cells” (Rows.Count, 1).End(xlUp).Row.” kodluyoruz. Bu satır, Sütun A'daki son kullanılan satırı bulur (verilerin Sütun A'da başladığını varsayarak). Çalışma sayfasındaki toplam satır sayısını sayar (Rows.Count), sonra son satırdan başlar ve Sütun A'daki ilk boş olmayan hücreyle karşılaşana kadar yukarı doğru hareket eder (End(xlUp)). Son boş olmayan hücrenin satır numarası “lastRow” değişkeninde saklanır.

Adım 5: Sonra, “newRow = lastRow + 1.” yazarız. Bu satır, eklenecek yeni satırın satır numarasını hesaplar. Sütun A'daki son kullanılan satırın hemen altındaki satır numarasını elde etmek için “lastRow” değişkenine 1 ekler.

Adım 6: Bu adımda, “newRow” değişkeniyle gösterilen satırda Insert metodu çağrılır ve veri tablosunun sonuna (A Sütununda son kullanılan satırın altına) yeni bir satır eklenir.

Adım 7: Makroyu kaydedin ve VBE düzenleyicisini kapatın. “Makro” iletişim kutusunu açmak için “ALT + F8” tuşlarına basın.
Listeden “InsertRowAtEndOfDataTable” makrosunu seçin ve “Çalıştır”a tıklayın.

Adım 8: Kodu çalıştırdığınızda VBA Insert Row below'un tetiklendiğini ve veri tablosunun sonuna yeni bir satırın eklendiğini göreceksiniz.

İşte kodun tamamı:
Sub InsertRowAtEndOfDataTable()
Dim lastRow As Long
Dim newRow As Long
' Çalışma sayfasında kullanılan son satırı bul
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' Yeni satır için satır numarasını hesapla (son kullanılan satırın bir satır altı)
newRow = lastRow + 1
' Veri tablosunun sonuna yeni bir satır ekle
Rows(newRow).Insert
End Sub
Yöntem 4 – Etkin Hücre Özelliğini Kullanma
Örnek – Kullanıcı Girişine Dayalı Dinamik Satır Ekleme
Kullanıcıların etkin hücrenin üstüne yeni bir satır eklemesine bir makro çalıştırarak izin vermek istediğinizi varsayalım.

Adım 1: Yeni modülde “DynamicRowInsertionUsingActiveCell” adında bir alt rutin oluşturun.

Adım 2: Sonra, “Range” veri türünde “rng” adlı bir değişken bildiriyoruz . Bir aralık değişkeni, çalışma sayfasındaki belirli bir hücreye veya hücre aralığına bir başvuruyu depolar.

Adım 3: Burada, “Long” veri türünde “newRow” adlı başka bir değişken tanımlıyoruz. “newRow” değişkeni, eklenecek yeni satırın satır numarasını depolamak için kullanılacaktır.

Adım 4: Sonra, VBA'daki etkin hücreyi (şu anda kullanıcı tarafından seçili olan) "rng" değişkenine atayacağız .

Adım 5: Bir sonraki satıra, “If Not Intersect(rng, ActiveSheet.UsedRange) Is Nothing Then.” kodunu yazıyoruz. Bu satır, etkin hücrenin çalışma sayfasının kullanılan aralığında olup olmadığını (yani çalışma sayfasının dışında olup olmadığını) kontrol eder.

Adım 6: Burada aktif hücrenin satır numarasını alıp “newRow” değişkenine kaydediyoruz.

Adım 7: Bu satırda “newRow” değişkeninin temsil ettiği satırda Insert metodu çağrılır ve aktif hücrenin üstüne yeni bir satır eklenir.

Adım 8: Sonra, “Else”yi kullanırız. Bu satır, “If-Then” yapısının bir parçasıdır ve satır 5'teki koşul karşılanmazsa (yani, etkin hücre çalışma sayfasının dışındaysa) yürütülür.

Adım 9: Daha sonra, kısa bir ifadeyle MsgBox fonksiyonunu kullanırız: "Lütfen çalışma sayfasında geçerli bir hücre seçin." Bu satır, kullanıcıya çalışma sayfasında geçerli bir hücre seçmesi gerektiğini bildiren belirtilen metni içeren bir mesaj kutusu görüntüler.

Adım 10: Kodu “End If” ile sonlandırıyoruz. Bu satır “If-Then” yapısının sonunu gösteriyor.

Adım 11: Makroyu kaydedin ve VBE düzenleyicisini kapatın. “Makro” iletişim kutusunu açmak için “ALT + F8” tuşlarına basın.
Listeden “DynamicRowInsertionUsingActiveCell” makrosunu seçin ve “Çalıştır”a tıklayın.

Adım 12: Etkin bir hücreyi seçtiğinizde (bu örnekte Hücre A2) ve kodu çalıştırdığınızda, yeni satırın etkin hücrenin hemen üstüne eklendiğini göreceksiniz.

Ayrıca, VBA'nın Etkin Hücrenin Altına Satır Ekle özelliğini kullanarak etkin hücrenin altına yeni satır oluşturmayı da başarabilirsiniz.
İşte kodun tamamı:
Alt DynamicRowInsertionUsingActiveCell()
Dim rng As Range
Dim newRow As Long
' Etkin hücreyi al
Set rng = ActiveCell
' Etkin hücrenin geçerli bir aralıkta olup olmadığını kontrol et (çalışma sayfasının dışında değil)
If Not Intersect(rng, ActiveSheet.UsedRange) Is Nothing Then
' Etkin hücrenin satır numarasını al
newRow = rng.Row
' Etkin hücrenin üstüne yeni bir satır ekle
Rows(newRow).Insert
Else
MsgBox “Lütfen çalışma sayfasında geçerli bir hücre seçin.”
End If
End Sub
Yöntem #5 – Offset Fonksiyonuyla Etkin Hücre Özelliğini Kullanma
Örnek – Formüllerle Yeni Bir Satırın Otomatik Olarak Eklenmesi
Diyelim ki Excel'de bir bütçe tablonuz var.

Ve aktif hücrenin altına formüllerle toplamları hesaplayan bir VBA Satır Ekleme işlemini otomatik olarak yapmak istiyorsunuz.
Adım 1: Yeni modülde “AutoInsertRowWithFormulas” adlı yeni bir alt rutinle başlıyoruz.

Adım 2: Burada, VBA veri türü “Range” olan “newRow” adlı bir değişken bildiriyoruz . Bir aralık değişkeni, çalışma sayfasındaki belirli bir hücreye veya hücre aralığına bir başvuruyu depolamak için kullanılır.

Adım 3: Bu satırda, bir satır aşağı taşımak için etkin hücrede “Offset” excel fonksiyonunu kullanırız (Offset(1)). Daha sonra, etkin hücrenin altındaki tüm satırı temsil eden sonuç hücresine “EntireRow” özelliği uygulanır. Tüm satır “newRow” değişkenine atanır.

Adım 4: Bu kod satırında, “newRow” değişkeniyle gösterilen satırda Insert metodu çağrılır ve etkin hücrenin altına yeni bir satır eklenir.

Adım 5: Burada, “newRow.Cells(1, 3).Formula = “=SUM(C2:C” & newRow.Row – 1 & “).” kodunu yazıyoruz. Bu satır, C sütunundaki değerlerin toplamını hesaplamak için yeni satıra bir formül ayarlar. Formülü, C sütunundaki yeni satırın ilk hücresine atamak için “Formula” özelliğini kullanır. Formül, “C2”den yeni satırın hemen üstündeki hücreye kadar olan aralıktaki değerleri toplamak için “SUM” işlevini kullanır.

Adım 6: Bu satırda, D sütunundaki değerlerin toplamını hesaplamak için yeni satıra başka bir formül ayarlayacağız. Önceki formüle benzer bir yapıyı takip eder.

Adım 7: Gerekirse, diğer sütunlar için formülleri gerektiği gibi ayarlamak üzere adım 5 ve 6'daki gibi daha fazla satır ekleyin.

Adım 8: Makroyu kaydedin ve VBE düzenleyicisini kapatın. “Makro” iletişim kutusunu açmak için “ALT + F8” tuşlarına basın.
Listeden “AutoInsertRowWithFormulas” makrosunu seçin ve “Çalıştır”a tıklayın.

Adım 9: Makroyu çalıştırdığınızda yeni hücrelerin formüllerle oluşturulduğunu göreceksiniz.

İşte tam kod:
Alt AutoInsertRowWithFormulas()
Dim newRow As Range
' Etkin hücreyi al
Set newRow = ActiveCell.Offset(1).EntireRow
' Etkin hücrenin altına yeni bir satır ekle
newRow.Insert
' Toplamları hesaplamak için yeni satır için formüller ayarla
newRow.Cells(1, 3).Formula = “=SUM(C2:C” & newRow.Row – 1 & “)” ' C sütunu için toplam
newRow.Cells(1, 4).Formula = “=SUM(D2:D” & newRow.Row – 1 & “)” ' D sütunu için toplam
' Gerektiğinde diğer sütunlar için daha fazla formül ekle
End Sub
