Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Hướng Dẫn VBA Tốt Nhất (Cho Người Mới) Bạn Sẽ Cần

Nền tảng lập trình VBA chạy xuyên suốt hầu hết sản phẩm Microsoft Office là một trong công cụ mạnh mẽ nhất ai cũng dùng để nâng cao sử dụng các sản phẩm đó.

Hướng dẫn VBA cho người mới này sẽ chỉ cách thêm menu Developer (Nhà phát triển) vào ứng dụng Office, cách vào cửa sổ trình soạn thảo VBA, và cách câu lệnh và vòng lặp VBA cơ bản hoạt động để bạn bắt đầu dùng VBA trong Excel, Word, PowerPoint, Outlook, và OneNote.

Hướng dẫn VBA này dùng phiên bản mới nhất Microsoft Office. Nếu bạn phiên bản cũ có thể thấy chút khác biệt so với ảnh chụp màn hình.

Cách Bật & Sử Dụng Trình Soạn Thảo VBA

Trong sản phẩm Office dùng trong hướng dẫn, bạn nhận ra không có menu Developer tham chiếu. Menu Developer chỉ có trong Excel, Word, Outlook, PowerPoint. OneNote không cung cấp công cụ chỉnh mã VBA từ trong ứng dụng, nhưng bạn vẫn tham chiếu API OneNote để tương tác OneNote từ chương trình Office khác.

Bạn học cách làm trong hướng dẫn VBA Nâng Cao sắp tới.

  • Để bật menu Developer trong sản phẩm Office, chọn menu File, chọn Options (Tùy chọn) từ menu điều hướng trái.
  • Bạn thấy menu Options pop-up. Chọn Customize Ribbon (Tùy chỉnh Ribbon) từ menu điều hướng trái.

Danh sách trái bao gồm tất cả menu và lệnh menu có sẵn trong ứng dụng Office. Danh sách phải là những menu hiện đang có hoặc kích hoạt.

  • Bạn thấy Developer trong danh sách phải, nhưng chưa kích hoạt. Chỉ tích hộp kiểm để kích hoạt menu Developer.
  • Nếu không thấy Developer bên phải, đổi Choose commands from (Chọn lệnh từ) trái thành All Commands (Tất cả lệnh). Tìm Developer từ danh sách và chọn Add>> ở giữa thêm menu đó vào Ribbon.
  • Chọn OK khi xong.
  • Khi menu Developer hoạt động, quay lại cửa sổ chính ứng dụng và chọn Developer từ menu trên.
  • Sau đó chọn View Code (Xem mã) từ nhóm Controls trong Ribbon mở cửa sổ trình soạn thảo VBA.

Điều này mở cửa sổ trình soạn thảo VBA nơi bạn gõ mã học ở các phần sau.

  • Thử thêm menu Developer vào vài ứng dụng Office bạn dùng hàng ngày. Khi thoải mái mở trình soạn thảo VBA, tiếp tục phần sau hướng dẫn.

Mẹo Lập Trình VBA Chung Cho Người Mới

Bạn nhận ra khi trình soạn thảo VBA mở, tùy chọn điều hướng khung trái trông khác nhau giữa các ứng dụng Office.

Điều này vì các đối tượng (objects) có sẵn đặt mã VBA phụ thuộc vào đối tượng trong ứng dụng. Ví dụ, Excel thêm mã VBA vào đối tượng workbook hoặc sheet. Word thêm vào tài liệu (documents). PowerPoint chỉ vào modules (mô-đun).

Vì vậy, đừng ngạc nhiên menu khác nhau. Cấu trúc và cú pháp (syntax) mã VBA giống nhau mọi ứng dụng. Khác biệt chỉ là đối tượng tham chiếu và hành động trên đối tượng qua mã VBA.

Trước khi đi sâu đối tượng và hành động qua VBA, xem cấu trúc và cú pháp VBA phổ biến nhất dùng khi viết mã.

Đặt Mã VBA Ở Đâu

Trong trình soạn thảo VBA, dùng 2 hộp thả xuống trên cửa sổ chỉnh sửa chọn đối tượng muốn gắn mã, và khi muốn mã chạy.

Ví dụ, Excel, nếu chọn Worksheet và Activate, mã chạy khi trang tính mở.

Hành động trang tính khác kích hoạt mã VBA bao gồm khi trang thay đổi, khi đóng (deactivated), khi tính toán trang chạy, và hơn nữa.

Khi thêm mã VBA trong trình soạn thảo, luôn chắc chắn đặt mã trên đối tượng và dùng hành động đúng muốn kích hoạt mã.

Câu Lệnh IF Trong VBA

Câu lệnh IF trong VBA hoạt động giống mọi ngôn ngữ lập trình.

Phần đầu IF xem điều kiện hoặc tập điều kiện đúng. Điều kiện nối bằng toán tử AND hoặc OR.

Ví dụ kiểm tra điểm số trong bảng tính trên/duới "điểm đỗ" (passing grade), gán trạng thái đỗ/trượt ô khác.

If Cells(2, 2) > 75 Then Cells(2, 3) = "Pass" Else Cells(2, 3) = "Fail"

Nếu không muốn toàn bộ câu lệnh trên một dòng, chia thành nhiều dòng thêm ký hiệu "_" cuối dòng.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = "Pass" Else _
Cells(2, 3) = "Fail"

Dùng kỹ thuật này thường làm mã dễ đọc và gỡ lỗi (debug) hơn.

Vòng Lặp For Next Trong VBA

Câu lệnh IF tuyệt vời so sánh đơn lẻ, như ví dụ xem ô đơn. Nhưng nếu muốn lặp qua toàn bộ phạm vi ô và làm cùng IF trên mỗi ô?

Trong trường hợp này cần vòng lặp FOR.

Để làm, dùng độ dài phạm vi, lặp qua độ dài bằng số hàng chứa dữ liệu.

Cần định nghĩa biến phạm vi và ô, lặp qua chúng. Cũng cần định nghĩa bộ đếm (counter) để xuất kết quả hàng thích hợp. Mã VBA trước có dòng này.

Dim rng As Range, cell As Range
Dim rowCounter as Integer

Định nghĩa kích thước phạm vi như sau.

Set rng = Range("B2:B7")
rowCounter = 2

Cuối, tạo vòng lặp FOR bước qua mỗi ô trong phạm vi làm so sánh.

For Each cell In rng
If cell.Value > 75 Then _
 Cells(rowCounter, 3) = "Pass" Else _
 Cells(rowCounter, 3) = "Fail"
 rowCounter = rowCounter + 1
Next cell

Khi script VBA chạy, thấy kết quả trong bảng tính thực.

Vòng Lặp While Trong VBA

Vòng lặp While cũng lặp qua loạt câu lệnh, giống FOR, nhưng điều kiện tiếp tục lặp là điều kiện vẫn đúng.

Ví dụ, viết cùng vòng FOR trên, thành WHILE, dùng biến rowCounter như sau.

While rowCounter < rng.Count + 2
If Cells(rowCounter, 2) > 75 Then _
 Cells(rowCounter, 3) = "Pass" Else _
 Cells(rowCounter, 3) = "Fail"
 rowCounter = rowCounter + 1
Wend

Lưu ý: giới hạn kết thúc rng.Count + 2 cần thiết vì rowCounter bắt đầu 2 và cần kết thúc hàng 7 dữ liệu kết thúc. Tuy nhiên, đếm phạm vi (B2:B7) chỉ 6, và vòng While chỉ kết thúc khi bộ đếm LỚN HƠN bộ đếm – nên giá trị rowCounter cuối cần 8 (hoặc rng.Count + 2).

Bạn cũng thiết lập While như sau:

While rowCounter <= rng.Count + 1

Bạn chỉ tăng đếm phạm vi (6) 1 đơn vị, vì khi rowCounter đến cuối dữ liệu (hàng 7), vòng lặp kết thúc.

Vòng Lặp Do While và Do Until Trong VBA

Vòng lặp Do While và Do Until gần giống While, nhưng hoạt động hơi khác.

  • Vòng lặp While kiểm tra điều kiện đúng ở đầu vòng.
  • Vòng lặp Do-While kiểm tra điều kiện đúng SAU KHI thực thi câu lệnh trong vòng.
  • Vòng lặp Do-Until kiểm tra điều kiện vẫn SAI sau khi thực thi vòng.

Trong trường hợp viết vòng While trên thành Do-While như sau.

Do
If Cells(rowCounter, 2) > 75 Then _
 Cells(rowCounter, 3) = "Pass" Else _
 Cells(rowCounter, 3) = "Fail"
 
rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

Trong trường hợp logic không thay đổi nhiều, nhưng nếu muốn so sánh logic diễn ra SAU KHI tất cả câu lệnh chạy (cho phép tất cả chạy ít nhất 1 lần bất kể), Do-While hoặc Do-Until là lựa chọn đúng.

Câu Lệnh Select Case Trong VBA

Loại câu lệnh logic cuối cần hiểu để cấu trúc mã VBA là Select Case.

Cho ví dụ trên, giả sử muốn phương pháp chấm điểm không chỉ đỗ/trượt. Thay vào đó, gán điểm chữ A đến F.

Bạn làm với Select Case sau:

For Each cell In rng
Select Case cell
 Case 95 To 100
 Cells(rowCounter, 3) = "A"
Case 85 To 94
 Cells(rowCounter, 3) = "B"
 Case 75 To 84
 Cells(rowCounter, 3) = "C"
 Case 65 To 74
 Cells(rowCounter, 3) = "D"
 Case 0 To 64
 Cells(rowCounter, 3) = "F"
 End Select
rowCounter = rowCounter + 1
Next cell

Bảng tính kết quả sau script VBA chạy trông như dưới.

Bây giờ bạn biết mọi thứ cần để bắt đầu dùng VBA trong ứng dụng Microsoft Office.