12/08/2018, 16:50

Excel VBA: Giới thiệu về Macros trong Excel

Macro là một chuỗi các lệnh mà bạn có thể sử dụng để tự động hóa các tác vụ được sử dụng thường xuyên để tiết kiệm thời gian gõ phím và thao tác chuột. Một Macro có thể được tạo bằng cách sử dụng Visual Basic for Applications (VBA) và được viết bởi người sử dụng. VBA (Visual Basic for ...

Macro là một chuỗi các lệnh mà bạn có thể sử dụng để tự động hóa các tác vụ được sử dụng thường xuyên để tiết kiệm thời gian gõ phím và thao tác chuột. Một Macro có thể được tạo bằng cách sử dụng Visual Basic for Applications (VBA) và được viết bởi người sử dụng.

VBA (Visual Basic for Applications) là 1 ngôn ngữ lập trình được tích hợp trong ứng dụng văn phòng như Excel, Word, PowerPoint, … Vì vậy, tất cả các chương trình mà bạn thực hiện trong Excel hoặc trong ứng dụng văn phòng khác đã được thực hiện trong VBA.

Về mặt kỹ thuật, VBA là một ngôn ngữ lập trình hướng sự kiện của Microsoft. VBA cũng được gọi là một ngôn ngữ lập trình mở rộng được tạo thành từ một tập các lệnh cốt lõi và được mở rộng trên cơ sở mỗi ứng dụng để có thể làm việc trực tiếp với các đối tượng trong ứng dụng đó.

Visual Basic for Applications (VBA) trong Excel là một ngôn ngữ lập trình nhẹ nhàng, mạnh mẽ cho phép bạn viết các hàm hoặc lệnh của riêng mình trong một bảng tính Excel.

Sử dụng Excel VBA bạn có thể làm hầu như bất kỳ tác vụ nào tương tự trong Excel.

Các đối tượng trong Excel VBA

Ví dụ: dưới đây là một dòng code hoàn chỉnh để gán giá trị 100 cho file “Book1.xlsx”, sheet “Sheet1”, range “A1”.

Chỉ định tên Workbook thao tác là: “Book1.xlsx”

Application.Workbooks("Book1.xlsx")

Worksheets là một thành viên của đối tượng Workbook. Thuộc tính Worksheets() trả về một tập hợp tất cả các sheet của đối tượng Workbook đang được active. Chỉ định tên Worksheet thao tác là: “Sheet1”

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")

Cuối cùng để trỏ đến Range “A1” của sheet “Sheet1” và gán bằng 100 như sau:

Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = 100

Điều quan trọng cần lưu ý là mỗi đối tượng có nhiều thành viên khác nhau mà chúng ta có thể sử dụng để tham chiếu đến các đối tượng khác nhau. Ví dụ, các thành viên của đối tượng Worksheet có thể bao gồm: Ranges, PivotTables, Shapes, Charts, ListObjects, vv

Với Excel VBA, bạn có thể tự động hóa các tác vụ trong Excel bằng cách viết code macro và gọi nó. Dưới đây là ví dụ cách tạo một macro trong excel đơn giản và thực thi code bằng một button.

Các bước để viết code và run code VBA trong Excel: 1. Bật Developter tab. 2. Save As Excel file thành Excel Macro File (từ excel 2007 trở lên). 3. Viết code VBA. 4. Run code VBA.

1.Bật Developer Tab

Để mở Developter tab thực theo các bước sau:

  1. Mở một file excel.

  2. Click chuột phải vào bất kỳ chỗ nào trong vùng ribbon -> chọn Customize the Ribbon…

  3. Check vào hộp Developer -> click OK.

  4. Bạn có thể thấy Developer tab bên cạnh View tab như sau:

2. Save As Excel file thành Excel Macro File

Để tạo một macro từ excel, bạn cần phải Save As file excel thành tập tin với phần mở rộng có định dạng .xlsm (excel 2007 trở lên) hoặc .xls (excel 2003)

Note: Để tạo một macro từ excel, nếu bạn đang dùng excel 2003 (.xls) thì bạn không phải làm việc này. Nếu bạn dùng excel 2007 (.xlsx) trở lên thì bạn làm theo các bước sau.

  1. Chọn File -> Save As

  2. Chọn kiểu file phần mở rộng .xlsm (hoặc .xls) -> click Save

  3. Click Ok.

Đến đây là đã tạo được một macro file.

3. Viết code VBA

Dưới đây là các bước để tạo ra một thủ tục trong Excel VBA.

  1. Mở Visual Basic Editor: chọn Vusual Basic hoặc bấm tổ hợp phím Alt + F11.

  2. Tạo module mới: click chuột phải vào VBAProject -> Insert -> Module.

  3. Tạo một Sub có tên ClickButton() vào Module1 với nội dung như trong hình.

4. Run code VBA

Insert button

Tại Developer tab, bạn có thể insert một button như sau:

  1. Chọn Insert -> click vào biểu tượng button trong phần ActiveX Controls (Hoặc kéo thả vào vùng cell của excel.)
  2. Click OK, ta được một button như sau:

Gán thủ tục macro cho button

  1. Chọn Desing Mode.

  2. Click chuột phải vào “Button1” tạo ở trên -> chọn Assign Macro…

  3. Gán “ClickButton()”(step #3 phần 4.) cho “Button1”.

Run Click vào button “Button1” cho ra kết quả như sau:

0