EXCEL VBA'DA INSERT ROW [SATIR EKLEME]

 

VBA Insert Row, Microsoft Excel'de bir çalışma sayfasına dinamik olarak yeni satırlar ekleyen bir programlama tekniğidir. VBA insert Row kullanarak, çalışma sayfasındaki belirli konumlara, örneğin bir tablonun sonuna, seçili bir hücrenin üstüne veya altına veya belirli koşullara göre yeni satırlar eklemek için kod yazabilirsiniz.

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.

VBA Satır Ekleme Giriş - Kod

Çı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 Satır Ekleme Giriş - Çıktı

ÖNEMLİ NOKTALAR

  1. 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.
  2. VBA'da döngü kullanarak alternatif satırlar ekleyebilirsiniz.
  3. Özellikle dinamik değerlerle satır eklerken hata yönetimi çok önemlidir.
  4. 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.

VBA IsEmpty - kullanım - Adım 1

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.

VBA IsEmpty - kullanım - Adım 2

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

VBA Satır Ekleme - Örnek 1 - Adım 3

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.

VBA Satır Ekleme - Örnek 1 - Adım 4.jpg

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.

VBA Satır Ekleme - Örnek 1 - Adım 5

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.

VBA Satır Ekleme - Örnek 1 - Adım 6

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.

VBA Satır Ekleme - Örnek 1 - Adım 7.jpg

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.

VBA Satır Ekleme - Örnek 1 - Adım 8.jpg

İş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.

VBA Satır Ekleme - Örnek 2

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.

VBA Satır Ekleme - Örnek 2 - Adım 1

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.

VBA Satır Ekleme - Örnek 2 - Adım 2

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.

VBA Satır Ekleme - Örnek 2 - Adım 3.jpg

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.

VBA Satır Ekleme - Örnek 2 - Adım 4

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.

VBA Satır Ekleme - Örnek 2 - Adım 5

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.

VBA Satır Ekleme - Örnek 2 - Adım 6

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.

VBA Satır Ekleme - Örnek 2 - Adım 7.jpg

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.

VBA Satır Ekleme - Örnek 2 - Adım 8.jpg

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ı).

VBA Satır Ekleme - Örnek 2 - Adım 9.jpg

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.

VBA Satır Ekleme - Örnek 2 - Adım 10

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.

VBA Satır Ekleme - Örnek 2 - Adım 11.jpg

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.

VBA Satır Ekleme - Örnek 2 - Adım 12.jpg

İş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.

VBA Satır Ekleme - Örnek 3

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

VBA Satır Ekleme - Örnek 3 - Adım 1

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.

VBA Satır Ekleme - Örnek 3 - Adım 2.jpg

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.

VBA Satır Ekleme - Örnek 3 - Adım 3

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.

VBA Satır Ekleme - Örnek 3 - Adım 4

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.

VBA Satır Ekleme - Örnek 3 - Adım 5

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.

VBA Satır Ekleme - Örnek 3 - Adım 6

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.

VBA Satır Ekleme - Örnek 3 - Adım 7.jpg

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.

VBA Satır Ekleme - Örnek 3 - Adım 8.jpg

İş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.

VBA Satır Ekleme - Örnek 4

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

VBA Satır Ekleme - Örnek 4 - Adım 1

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.

VBA Satır Ekleme - Örnek 4 - Adım 2

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.

VBA Satır Ekleme - Örnek 4 - Adım 3

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

VBA Satır Ekleme - Örnek 4 - Adım 4

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.

VBA Satır Ekleme - Örnek 4 - Adım 5

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

VBA Satır Ekleme - Örnek 4 - Adım 6

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.

VBA Satır Ekleme - Örnek 4 - Adım 7.jpg

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.

Örnek 3 - Adım 4

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.

VBA Satır Ekleme - Örnek 4 - Adım 9

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

VBA Satır Ekleme - Örnek 4 - Adım 10

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.

Örnek 4 - Adım 8.jpg

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.

VBA Satır Ekleme - Örnek 4 - Adım 11.jpg

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.

VBA Satır Ekleme - Örnek 4

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.

Örnek 5 - Adım 1

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.

Örnek 5 - Adım 2

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.

Örnek 5 - Adım 3

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.

Örnek 5 - Adım 4.jpg

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.

Örnek 5 - Adım 5.jpg

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.

Örnek 5 - Adım 6.jpg

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.

Örnek 5 - Adım 7.jpg

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.

Örnek 5 - Adım 8.jpg

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

Örnek 5 - Adım 9

İş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



Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...