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 orta düzeydeki kullanıcılar tablolarla çalışmayı zor buluyor. Bu makale VBA kodlamasında excel tablolarına referans verilmesinden 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 dizi hücre ile ç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 VBA ListObjects Excel Şablonunu buradan indirebilirsiniz - VBA ListObjects Excel Şablonu
  • Bu veriler için önce 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 Uç Alt Kadar Uzun Dim LC 

  • 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, yoksa "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, bu nedenle aşağıdaki kod bizim için bir tablo oluşturacaktır.

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.

Söz konusu verilere tabloyu 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 önce değişkeni "ListObject" olarak tanımlayın.

Kod:

 Sub List_Objects_Example2() Dim MyTable As ListObject End Sub 

  • Now set the reference to this variable by using the table name.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") End Sub 

Now the variable “MyTable” holds the reference for the table “EmpTable”.

  • Enter the variable name and put a dot to see the properties and methods of the VBA ListObject.

For example, if we want to select the entire table then we need to use the “Range” object and under this, we need to use the “Select” method.

Code:

MyTable.Range.Select

This would select the entire data table including the heading.

  • If you want to select only the contents of the table without headers then we need to use “DataBodyRange”.

Code:

MyTable.DataBodyRange.Select

Like this, we can play around with tables.

  • Below is the list of activity codes for your reference.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") MyTable.DataBodyRange.Select 'To Select data range without headers MyTable.Range.Select 'To Select data range with headers MyTable.HeaderRowRange.Select 'To Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.