VBA Tabloları ve ListObjects

Bu öğretici, VBA'da Tablolar ve ListObjects ile nasıl çalışılacağını gösterecektir.

VBA Tabloları ve ListObjects

Tablolar, Excel'in en kullanışlı ve güçlü özelliklerinden biridir, bu eğitimde, bir tablo oluşturmak, bir tabloya basit bir sıralama eklemek, bir tabloyu filtrelemek ve tabloyla ilgili diğer görevleri gerçekleştirmek için VBA'nın nasıl kullanılacağını inceleyeceğiz.

VBA ile Tablo Oluşturun

ListObjects.Add Yöntemi, çalışma sayfasındaki bir aralığa dayalı olarak bir çalışma sayfasına tablo ekleyebilir. Sayfa1 adlı bir çalışma sayfasında ($A$1:$B$8) gösterilen aralığa sahibiz.

Aşağıdaki kod, varsayılan Tablo Stilini kullanarak ($A$1:$B$8) aralığına göre çalışma sayfanıza Tablo1 adlı bir tablo ekler:

123456 Alt CreateTableInExcel()ActiveWorkbook.Sheets("Sheet1").ListObjects.Add(xlSrcRange, Range("$A$1:$B$8"), , xlYes).Name = _"Tablo 1"Alt Bitiş

Sonuç:

VBA ile Tablonun Sonuna Sütun Ekleme

Tablonuzun sonuna bir sütun eklemek için ListColumns.Add yöntemini kullanabilirsiniz. Aşağıda gösterilen Table1 adlı tablomuz var.

Her zaman tablonun sonuna bir sütun ekleyecek olan aşağıdaki kodu kullanarak tablonuza bir sütun ekleyebilirsiniz:

12345 Alt AddColumnToTheEndOfTheTable()ActiveWorkbook.Sheets("Sayfa1").ListObjects("Tablo1").ListColumns.AddAlt Bitiş

Sonuç:

VBA ile Tablonun En Altına Satır Ekleme

Tablonuzun altına bir satır eklemek için ListRows.Add yöntemini kullanabilirsiniz. Aşağıda gösterilen Table1 adlı tablomuz var.

Aşağıdaki kod her zaman tablonuzun altına bir satır ekleyecektir.

12345 Alt AddRowToTheBottomOfTheTable()ActiveSheet.ListObjects("Table1").ListRows.AddAlt Bitiş

Sonuç:

VBA ile Basit Sıralama Ekleme

VBA ile bir tabloyu sıralayabilirsiniz. Aşağıda gösterilen Table1 adlı tablomuz var ve Satış Sütununu en düşükten en yükseğe sıralamak için VBA'yı kullanabiliriz.

Aşağıdaki kod, Satış sütununu artan düzende sıralayacaktır.

12345678910111213141516171819 Alt SimpleSortOnTheTable()Aralık("Tablo1[[#Başlıklar],[Satış]]").SeçinActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sayfa1").ListObjects("Table1").Sort.SortFields.Add _Key:=Range("Table1[[#All],[Satış]]"), SortOn:=xlSortOnValues, Order:= _xlArtan, DataOption:=xlSortNormalActiveWorkbook.Worksheets("Sheet1") ile.ListObjects("Table1").Sort.Başlık = xlEvet.MatchCase = Yanlış.Oryantasyon = xlTopToBottom.SortMethod = xlPinYin.Uygulamakİle bitmekAlt Bitiş

Sonuç:

Bir Tabloyu VBA ile Filtreleyin

Ayrıca VBA kullanarak bir Excel tablosunu filtreleyebilirsiniz. Tablo1 adında bir tablomuz var ve tabloyu yalnızca 1500'den büyük satışların gösterileceği şekilde filtrelemek istiyoruz.

Beş adet isteğe bağlı parametresi olan Autofilter yöntemini kullanabiliriz. İkinci sütun olan Satış sütununu filtrelemek istediğimiz için Alan'ı 2 olarak belirledik ve tarih ve sayılar için kullanılan xlAnd operatör parametresini kullanıyoruz.

123456 Alt SimpleFilter()ActiveWorkbook.Sheets("Sheet1").ListObjects("Table1").Range.AutoFilter Field:=2, Criteria1:= _">1500", Operatör:=xlAndAlt Bitiş

Sonuç:

VBA'da ShowAllData Yöntemiyle Filtreyi Temizleyin

Filtreyi temizlemek için Worksheet sınıfının ShowAllData Yöntemine erişebilirsiniz. Temizlemek istediğiniz bir tablonun filtre(ler)iyse, önce tabloda VBA'da yapabileceğiniz bir hücre seçmeniz gerekir.

Çalışma sayfasında bir filtre uygulanıp uygulanmadığını kontrol etmek için koşullu mantık kullanılmıyorsa ShowAllData yöntemi bir hata üretecektir. Aşağıdaki kod, bunu nasıl yapacağınızı gösterir:

123456789 Alt ClearingTheFilter()Aralık("Tablo1[[#Başlıklar],[Satış]]").SeçIf ActiveWorkbook.Worksheets("Sheet1").FilterMode = True O zamanActiveSheet.ShowAllDataBitirAlt Bitiş

Bir Excel Tablosundan Tüm Filtreleri Temizle

Önce tabloda bir hücre seçmek zorunda kalmadan ListObject sınıfının ShowAllData Yöntemine erişebilirsiniz. Aşağıdaki kod, bunu nasıl yapacağınızı gösterir:

123 Alt ClearAllTableFilters()ActiveWorkbook.Worksheets("Sayfa1").ListObjects("Table1").AutoFilter.ShowAllDataAlt Bitiş

VBA ile Satır Silme

ListRows.Delete yöntemini kullanarak tablonuzun veri gövdesindeki bir satırı silebilirsiniz. Satır numarasını kullanarak hangi satırı belirtmeniz gerekir. Table1 adında aşağıdaki tablomuz var.

Diyelim ki tablonuzun veri gövdesindeki ikinci satırı silmek istediniz, aşağıdaki kod bunu yapmanıza izin verecektir:

12345 Alt SilARow()ActiveWorkbook.Worksheets("Sayfa1").ListObjects("Tablo1").ListRows(2).DeleteAlt Bitiş

Sonuç:

VBA ile Sütun Silme

ListColumns.Delete yöntemini kullanarak tablonuzdan bir sütun silebilirsiniz. Aşağıda gösterilen Table1 adlı aşağıdaki tabloya sahibiz:

İlk sütunu silmek için aşağıdaki kodu kullanırsınız:

12345 Alt SilAC Sütunu()ActiveWorkbook.Worksheets("Sayfa1").ListObjects("Tablo1").ListColumns(1).DeleteAlt Bitiş

Sonuç:

VBA'da Tabloyu Aralığa Dönüştürme

VBA kullanarak bir tabloyu normal aralığa dönüştürebilirsiniz. Aşağıdaki kod, Table1 adlı bir tabloyu bir aralığa nasıl dönüştüreceğinizi gösterir:

12345 Alt DönüştürmeATableBackToANormalRange()ActiveWorkbook.Sheets("Sayfa1").ListObjects("Table1").UnlistAlt Bitiş

VBA kullanarak bir Çalışma Sayfasındaki tüm Tablolara Bantlı Sütunlar Ekleme ve biçimlendirme

ListObjects koleksiyonunu kullanarak çalışma sayfanızdaki tüm tablolara erişebilirsiniz. Aşağıdaki sayfada iki tablomuz var ve VBA kullanarak her iki tabloya aynı anda bir Bantlı Sütun eklemek ve her iki tablonun veri bölümünün yazı tipini kalın olarak değiştirmek istiyoruz.

12345678910111213 Alt EklemeBandedColumns()Dim tbl As ListObjectÇalışma Sayfası Olarak Dim shtSet sht = ThisWorkbook.ActiveSheetHer tbl için sht.ListObjectstbl.ShowTableStyleColumnStripes = Doğrutbl.DataBodyRange.Font.Bold = DoğruSonraki tblAlt Bitiş

Sonuç:

DoCmd.RunSQL Kullanarak VBA'da Access'te Tablo Oluşturma

VBA'da Access'te tablo oluşturmanın ana yollarından biri, SQL deyimiyle bir eylem sorgusu çalıştırmak için DoCmd.RunSQL yöntemini kullanmaktır.

Örnek formumuzda bir buton var ve butona tıkladığımızda ProductsTable adında iki alanlı veya sütunlu bir tablo oluşturmak istiyoruz, biri ProductsID adlı birincil anahtar alanı, diğeri ise Sales adlı bir alan olacaktı.

Bu tabloyu oluşturmak için aşağıdaki kodu kullanırız:

123456 Özel Alt cmdCreateProductsTable_Click()DoCmd.RunSQL "CREATE TABLE ProductsTable" _& "(ProductID INTEGER PRIMARY KEY, Sales Integer);"Alt Bitiş

Sonuç:

VBA Kullanarak Access'te Bir Tabloyu Filtreleme

DoCmd.ApplyFilter yöntemini kullanarak Access'te bir tabloya da filtre uygulayabilirsiniz. Access'te ProductsTable adında aşağıda gösterilen basit tablomuz var.

Formumuzda bu düğmeye basmak ve ardından yalnızca 1500'den büyük Satışları görmek istiyoruz.

Yani, bunu yapmak için aşağıdaki kodu kullanırdık:

1234567 Özel Alt cmdFilter_Click()DoCmd.OpenTable "Ürünler Tablosu"DoCmd.ApplyFilter , "[Satış]>1500"Alt Bitiş

Sonuç:

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave