VBA ListObjects | Hướng dẫn ListObject Bảng Excel trong Excel VBA

ListObjects trong VBA là gì?

Trong một bảng thông thường, những gì chúng ta thấy là một tập dữ liệu nhưng trong thuật ngữ VBA còn có nhiều thứ hơn như có phạm vi của tổng phạm vi danh sách dữ liệu, cột được gọi là cột danh sách và hàng được gọi là hàng danh sách, v.v. , vì vậy để truy cập thuộc tính này, chúng ta có một hàm có sẵn được gọi là Listobjects và được sử dụng với hàm trang tính.

VBA ListObject là một cách đề cập đến các bảng excel trong khi viết mã VBA. Bằng cách sử dụng VBA LISTOBJECTS, chúng ta có thể tạo, xóa bảng và hoàn toàn có thể sử dụng bảng excel trong mã VBA. Bảng Excel rất phức tạp, người mới bắt đầu và thậm chí ở một mức độ nào đó mà người dùng trình độ trung cấp cảm thấy khó khăn khi làm việc với bảng. Vì bài viết này nói về việc tham chiếu các bảng excel trong mã hóa VBA nên tốt hơn là bạn nên có kiến ​​thức tốt về các bảng trong excel.

Khi dữ liệu được chuyển đổi thành bảng, chúng ta không còn làm việc với một dải ô nữa mà chúng ta cần làm việc với dải bảng, vì vậy trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách làm việc với bảng excel để viết mã VBA hiệu quả.

Tạo định dạng bảng bằng ListObjects trong Excel VBA

Ví dụ, hãy xem dữ liệu excel bên dưới.

Sử dụng mã VBA ListObject, chúng tôi sẽ tạo một định dạng bảng cho dữ liệu này.

Bạn có thể tải xuống Mẫu VBA ListObjects Excel này tại đây - Mẫu VBA ListObjects Excel
  • Đối với dữ liệu này, trước tiên, chúng ta cần tìm hàng & cột được sử dụng cuối cùng là gì, vì vậy hãy xác định hai biến để tìm điều này.

Mã:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long End Sub 

  • Để tìm hàng và cột được sử dụng cuối cùng, hãy sử dụng mã bên dưới.

Mã:

LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column

  • Bây giờ hãy xác định thêm một biến để giữ tham chiếu của dữ liệu.

Mã:

 Dim Rng As Range 

  • Bây giờ, hãy đặt tham chiếu cho biến này bằng cách sử dụng đoạn mã dưới đây.

Mã:

 Đặt Rng = Cells (1, 1) .Resize (LR, LC)

Bây giờ chúng ta cần sử dụng phương thức VBA “ListObject.Add” để tạo một bảng và bên dưới là cú pháp của tương tự.

ListObject.Add (Nguồn, XlListObjectHasHeaders, Đích, TableStyleName)

Nguồn: Đây là không có gì cho phạm vi ô mà chúng tôi đang chèn bảng. Vì vậy, chúng ta có thể cung cấp hai đối số ở đây, tức là “xlSrcRange”“xlSrcExternal”.

XlListObjectHasHeaders: Nếu bảng chèn dữ liệu có tiêu đề hoặc không. Nếu có, chúng tôi có thể cung cấp “xlYes” nếu không, chúng tôi có thể cung cấp “xlNo”.

Đích: Đây không là gì ngoài phạm vi dữ liệu của chúng tôi.

Kiểu bảng: Nếu bạn muốn áp dụng bất kỳ kiểu bảng nào, chúng tôi có thể cung cấp kiểu.

  • Ok, bây giờ trong trang tính đang hoạt động, chúng tôi đang tạo bảng, vì vậy mã dưới đây sẽ tạo một bảng cho chúng tôi.

Mã:

 Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Sau đó, chúng ta cần đặt tên cho bảng này.

Mã:

Ws.ListObjects (1) .name = "EmpTable"

  • Dưới đây là mã đầy đủ để bạn tham khảo.

Mã:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column Dim Rng As Range Đặt Rng = Cells (1, 1) .Resize (LR, LC) Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, hãy chạy mã và xem điều kỳ diệu.

Nó đã tạo bảng với dữ liệu được đề cập và đặt tên bảng là “EmpTable” .

Định dạng bảng Excel với VBA ListObjects

Khi bảng Excel đã được tạo, chúng ta có thể làm việc với các bảng bằng cách sử dụng vba ListObject collection.

  • Đầu tiên, xác định biến là "ListObject".

Mã:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Bây giờ đặt tham chiếu đến biến này bằng cách sử dụng tên bảng.

Mã:

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

Bây giờ biến “MyTable” giữ tham chiếu cho bảng “EmpTable”.

  • Nhập tên biến và đặt một dấu chấm để xem các thuộc tính và phương thức của VBA ListObject.

Ví dụ: nếu chúng ta muốn chọn toàn bộ bảng thì chúng ta cần sử dụng đối tượng "Phạm vi" và trong đối tượng này, chúng ta cần sử dụng phương thức "Chọn".

Mã:

MyTable.Range.Select

Thao tác này sẽ chọn toàn bộ bảng dữ liệu bao gồm cả tiêu đề.

  • Nếu bạn chỉ muốn chọn nội dung của bảng mà không có tiêu đề thì chúng ta cần sử dụng “DataBodyRange”.

Mã:

MyTable.DataBodyRange.Select

Như thế này, chúng ta có thể chơi với các bàn.

  • Dưới đây là danh sách mã hoạt động để bạn tham khảo.

Mã:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange Chọn 'Để chọn dải dữ liệu không có tiêu đề MyTable.Range. Chọn' Để chọn dải dữ liệu có tiêu đề MyTable.HeaderRowRange.Select 'To Chọn các hàng tiêu đề bảng MyTable.ListColumns (2) .Range.Select 'Để chọn cột 2 bao gồm tiêu đề MyTable.ListColumns (2) .DataBodyRange.Select' Để chọn cột 2 không có tiêu đề End Sub 

Như thế này, chúng ta có thể sử dụng bộ sưu tập “ListObject” để chơi với các bảng excel.

Những điều cần ghi nhớ

  • VBA ListObject là tập hợp các đối tượng để tham chiếu bảng excel.
  • Để truy cập bộ sưu tập ListObject, trước tiên chúng ta cần xác định bảng tính mà chúng ta đang đề cập đến là gì.

$config[zx-auto] not found$config[zx-overlay] not found