VBA ListObjects - Excel VBA'da Nesne Excel Tablolarını Listeleme Kılavuzu

VBA'da ListObjects nedir?

Normalde bir tabloda gördüğümüz şey bir veri kümesidir, ancak VBA terminolojisinde toplam veri listesi aralığı olduğu gibi çok daha fazlası vardır, sütun liste sütunu olarak bilinir ve satır liste satırı olarak bilinir vb. , bu nedenle bu özelliklere erişmek için, Listobjects olarak bilinen ve çalışma sayfası işlevi ile kullanılan dahili bir işleve sahibiz.

VBA ListObject, VBA kodunu yazarken excel tablolarına başvurmanın bir yoludur. VBA LISTOBJECTS kullanarak tablo oluşturabilir, silebilir ve tamamen VBA kodundaki excel tabloları ile oynayabiliriz. Excel Tabloları zor, yeni başlayanlar ve hatta bir dereceye kadar orta düzey kullanıcılar tablolarla çalışmayı zor buluyor. Bu makale VBA kodlamasında excel tablolarına atıfta bulunmaktan bahsettiğinden, excel'deki tablolar hakkında iyi bilgiye sahip olmanız daha iyidir.

Veriler tablolara dönüştürüldüğünde, artık bir hücre aralığıyla çalışmıyoruz. Bunun yerine tablo aralıklarıyla çalışmamız gerekiyor, bu nedenle bu makalede VBA kodlarını verimli bir şekilde yazmak için excel tablolarıyla nasıl çalışılacağını göstereceğiz.

Excel VBA'da ListObjects Kullanarak Tablo Biçimi Oluşturun

Örneğin, aşağıdaki excel verilerine bakın.

VBA ListObject kodunu kullanarak bu veriler için bir tablo formatı oluşturacağız.

  • Bu veriler için önce, en son kullanılan satır ve sütunun ne olduğunu bulmalıyız, bu nedenle bunu bulmak için iki değişken tanımlayın.

Kod:

Alt Liste_Objeler_Örnek1 () Sönük LR, Uzun Son Alt Kadar Uzun Kısık
  • Son kullanılan satırı ve sütunu bulmak için aşağıdaki kodu kullanın.

Kod:

LR = Hücreler (Rows.Count, 1) .End (xlUp) .Row LC = Hücreler (1, Columns.Count) .End (xlToLeft) .Column
  • Şimdi verilerin referansını tutmak için bir değişken daha tanımlayın.

Kod:

Karartma Aralığı Aralık Olarak
  • Şimdi aşağıdaki kodu kullanarak bu değişkene referansı ayarlayın.

Kod:

Aralığı Ayarla = Hücreler (1, 1). Yeniden Boyutlandırma (LR, LC)

Şimdi bir tablo oluşturmak için VBA "ListObject.Add" yöntemini kullanmamız gerekiyor ve aşağıda aynı sözdizimi var.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

Kaynak: Bu, tabloyu hangi hücre aralığı için eklediğimiz hiçbir şey değildir. Yani burada iki argüman sağlayabiliriz, yani "xlSrcRange" ve "xlSrcExternal".

XlListObjectHasHeaders: Veri ekleyen tablonun başlıkları olup olmadığı. Evet ise, "xlYes" sağlayabiliriz. Değilse , "xlNo" sağlayabiliriz.

Hedef: Bu bizim veri aralığımızdan başka bir şey değil.

Tablo Stili: Herhangi bir tablo stili uygulamak isterseniz stiller sağlayabiliriz.

  • Tamam, şimdi aktif sayfada, tabloyu oluşturuyoruz, böylece aşağıdaki kod bizim için bir tablo oluşturacak.

Kod:

Çalışma Sayfası Olarak Dim Ws Ayarla Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng
  • Bundan sonra bu tabloya bir isim vermemiz gerekiyor.

Kod:

Ws.ListObjects (1) .name = "EmpTable"
  • Aşağıda referansınız için tam kod bulunmaktadır.

Kod:

Sub List_Objects_Example1 () Dim LR As Long LR As Long LR = Hücreler (Rows.Count, 1) .End (xlUp) .Row LC = Hücreler (1, Columns.Count) .End (xlToLeft) .Column Dim Aralığı Aralık Olarak Rng = Hücreleri (1, 1) Ayarla. Yeniden Boyutlandır (LR, LC) Dim Ws'yi Çalışma Sayfası Olarak Ayarla Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub

Tamam, kodu çalıştıralım ve sihri görelim.

Tabloyu belirtilen verilere göre oluşturmuş ve tablo adını “EmpTable” olarak vermiştir.

Excel Tablolarını VBA ListObjects ile Biçimlendirme

Excel tablosu oluşturulduktan sonra, VBA ListObject koleksiyonunu kullanarak tablolarla çalışabiliriz.

  • İlk olarak, değişkeni "ListObject" olarak tanımlayın.

Kod:

Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub
  • Şimdi tablo adını kullanarak bu değişkene referansı ayarlayın.

Kod:

Sub List_Objects_Example2 () MyTable'ı ListObject Olarak Dim Ayarla MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub

Artık "MyTable" değişkeni "EmpTable" tablosu için referansı tutuyor.

  • Değişken adını girin ve VBA ListObject öğesinin özelliklerini ve yöntemlerini görmek için bir nokta koyun.

Örneğin tüm tabloyu seçmek istiyorsak “Aralık” nesnesini kullanmalıyız ve bunun altında da “Seç” yöntemini kullanmalıyız.

Kod:

MyTable.Range.Select

Bu, başlık dahil tüm veri tablosunu seçer.

  • Başlık olmadan yalnızca tablonun içeriğini seçmek istiyorsanız, "DataBodyRange" kullanmamız gerekir.

Kod:

MyTable.DataBodyRange.Select

Bunun gibi, masalarla oynayabiliriz.

  • Referansınız için aktivite kodlarının listesi aşağıdadır.

Kod:

Alt List_Objects_Example2 () MyTable'ı ListObject Olarak Dim Ayarla MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange Başlıklar olmadan veri aralığını seçmek için MyTable.Range. 'MyTable.HeaderRowRange başlıkları ile veri aralığını seçmek için' seçeneğini seçin. Tablo başlığı satırlarını seçin MyTable.ListColumns (2) .Range.Select 'MyTable.ListColumns (2) başlığı dahil 2. sütunu seçmek için .DataBodyRange' Başlık olmadan 2. sütunu seçmek için End Sub

Bunun gibi, "ListObject" koleksiyonunu excel tablolarıyla oynamak için kullanabiliriz.

Hatırlanacak şeyler

  • VBA ListObject, excel tablolarına başvurulacak nesnelerin koleksiyonudur.
  • Önce ListObject koleksiyonuna erişmek için, bahsettiğimiz çalışma sayfasının ne olduğunu belirtmemiz gerekir.

Ilginç makaleler...