Hướng dẫn VBA tốt nhất (cho người mới bắt đầu) mà bạn sẽ cần

Nền tảng lập trình VBA chạy xuyên suốt gần như tất cả các sản phẩm (VBA programming)Microsoft Office là một trong những công cụ mạnh mẽ nhất mà mọi người có thể sử dụng để nâng cao việc sử dụng các sản phẩm đó.

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

Hướng dẫn VBA này sử dụng phiên bản mới nhất của các sản phẩm (VBA)Microsoft Office . Nếu bạn có phiên bản cũ hơn, bạn có thể thấy một số khác biệt nhỏ so với ảnh chụp màn hình.

Cách kích hoạt và sử dụng VBA Editor(How To Enable & Use The VBA Editor)

Trong bất kỳ sản phẩm Office nào được sử dụng trong hướng dẫn này, bạn có thể nhận thấy rằng bạn không có menu Nhà phát triển(Developer) được tham chiếu . Menu nhà phát triển chỉ có sẵn trong Excel , Word , OutlookPowerpoint . OneNote không cung cấp công cụ để chỉnh sửa mã VBA từ bên trong ứng dụng, nhưng bạn vẫn có thể tham chiếu API OneNote(OneNote API) để tương tác với OneNote từ các chương trình Office khác. 

Bạn sẽ học cách thực hiện việc này trong hướng dẫn VBA nâng cao(Advanced VBA) sắp tới của chúng tôi .

  • Để bật menu Nhà phát triển(Developer) trong bất kỳ sản phẩm văn phòng nào, hãy chọn menu Tệp(File) và chọn Tùy chọn(Options) từ menu điều hướng bên trái. 
  • Bạn sẽ thấy một cửa sổ bật lên của menu Tùy chọn(Options) . Chọn Tùy chỉnh ruy-băng(Customize Ribbon) từ menu điều hướng bên trái.

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

  • Bạn sẽ thấy Nhà phát triển(Developer) trong danh sách ở bên phải, nhưng nó sẽ không được kích hoạt. Chỉ cần(Just) chọn hộp kiểm để kích hoạt menu Nhà phát triển(Developer) .

  • Nếu bạn không thấy Nhà phát triển(Developer) khả dụng ở bên phải, hãy thay đổi bên trái Chọn lệnh(Choose commands) từ menu thả xuống thành Tất cả lệnh(All Commands) . Tìm Nhà phát triển(Developer) từ danh sách và chọn Add>> ở giữa để thêm menu đó vào Ruy-băng(Ribbon) .
  • Chọn OK khi bạn hoàn tất.
  • Sau khi menu Nhà phát triển(Developer) hoạt động, bạn có thể quay lại cửa sổ ứng dụng chính của mình và chọn Nhà phát triển(Developer) từ menu trên cùng. 
  • Sau đó chọn Mã Chế độ xem(View Code) từ nhóm Điều khiển(Controls) trong ruy-băng để mở cửa sổ trình soạn thảo VBA .

  • Thao tác này sẽ mở ra cửa sổ trình soạn thảo VBA , nơi bạn có thể nhập mã sẽ học trong vài phần tiếp theo.

  • Hãy thử thêm menu Nhà phát triển(Developer) vào một vài ứng dụng Office mà bạn sử dụng hàng ngày. Khi bạn đã thấy thoải mái khi mở cửa sổ trình soạn thảo VBA , hãy tiếp tục đến phần tiếp theo của hướng dẫn này.

Mẹo lập trình VBA chung cho người mới bắt đầu(General VBA Programming Tips for Beginners)

Bạn sẽ nhận thấy khi trình chỉnh sửa VBA mở ra, các tùy chọn điều hướng trong bảng điều khiển bên trái trông khác với ứng dụng Office này(Office) với ứng dụng Office khác.

Điều này là do các đối tượng có sẵn nơi bạn có thể đặt mã VBA phụ thuộc vào những đối tượng có trong ứng dụng. Ví dụ: trong Excel , bạn có thể thêm mã VBA vào sổ làm việc hoặc các đối tượng trang tính. Trong Word , bạn có thể thêm mã VBA vào tài liệu. Trong Powerpoint , chỉ với các mô-đun.

Vì vậy, đừng ngạc nhiên bởi các menu khác nhau. Cấu trúc và cú pháp của mã VBA giống nhau trên tất cả các ứng dụng. Sự khác biệt duy nhất là các đối tượng bạn có thể tham chiếu và các hành động bạn có thể thực hiện trên các đối tượng đó thông qua mã VBA .

Trước khi chúng ta đi sâu vào các đối tượng và hành động khác nhau mà bạn có thể thực hiện thông qua mã VBA , trước tiên hãy xem cấu trúc và cú pháp VBA phổ biến nhất mà bạn có thể sử dụng khi viết mã VBA .

Đặt mã VBA ở đâu(Where To Put VBA Code)

Khi đang ở trong trình chỉnh sửa VBA , bạn cần sử dụng hai hộp thả xuống ở đầu cửa sổ chỉnh sửa để chọn đối tượng bạn muốn đính kèm mã và thời điểm bạn muốn mã chạy.

Ví dụ: trong Excel , nếu bạn chọn Trang tính(Worksheet)Kích hoạt(Activate) , mã sẽ chạy bất cứ khi nào trang tính được mở. 

Các hành động trang tính khác mà bạn có thể sử dụng để kích hoạt mã VBA của mình bao gồm khi trang tính thay đổi, khi trang tính bị đóng (hủy kích hoạt), khi tính toán trang tính được chạy và hơn thế nữa.

Khi bạn thêm mã VBA trong trình chỉnh sửa, hãy luôn đảm bảo đặt mã VBA của bạn trên đối tượng và sử dụng đúng hành động mà bạn muốn sử dụng để kích hoạt mã đó.

Câu lệnh VBA IF(VBA IF Statements)

Câu lệnh IF hoạt động trong VBA giống như nó hoạt động trong bất kỳ ngôn ngữ lập trình nào khác.

Phần đầu tiên của câu lệnh IF xem một điều kiện hoặc tập hợp các điều kiện là đúng. Các điều kiện này có thể được kết hợp bởi toán tử AND hoặc OR để liên kết chúng với nhau.

Một ví dụ sẽ là kiểm tra xem điểm trong bảng tính cao hơn hay thấp hơn điểm “đạt” và gán trạng thái đạt hoặc không đạt cho một ô khác.

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

Nếu bạn không muốn toàn bộ câu lệnh trên một dòng, bạn có thể chia nó thành nhiều dòng bằng cách thêm ký hiệu “_” vào cuối dòng.

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

Sử dụng kỹ thuật này thường có thể làm cho mã dễ đọc và gỡ lỗi hơn nhiều.

VBA cho các vòng tiếp theo(VBA For Next Loops)

Câu lệnh IF rất phù hợp cho các phép so sánh đơn lẻ, như ví dụ ở trên về việc xem xét một ô đơn lẻ. Nhưng điều gì sẽ xảy ra nếu bạn muốn lặp qua toàn bộ phạm vi ô và thực hiện cùng một câu lệnh IF trên mỗi ô?

Trong trường hợp này, bạn cần một vòng lặp FOR

Để làm điều này, bạn cần sử dụng độ dài của một dải ô và lặp lại độ dài đó theo số hàng chứa dữ liệu.

Để làm điều này, bạn cần xác định phạm vi và biến ô, và lặp qua chúng. Bạn cũng sẽ cần xác định bộ đếm để có thể xuất kết quả ra hàng thích hợp. Vì vậy, mã VBA của bạn trước tiên sẽ có dòng này.

Dim rng As Range, ô As Range (Dim rng As Range, cell As Range)
Dim rowCounter as Integer

Xác định kích thước phạm vi như sau. 

Set rng = Range(“B2:B7”)
rowCounter = 2

Cuối cùng, bạn có thể tạo vòng lặp FOR của mình để bước qua mọi ô trong phạm vi đó và thực hiện 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 tập lệnh VBA(VBA script) này được chạy, bạn sẽ thấy kết quả trong bảng tính thực tế.

VBA trong khi vòng lặp(VBA While Loops)

Vòng lặp(Loop) While cũng lặp qua một loạt câu lệnh, giống như vòng lặp FOR , nhưng điều kiện của vòng lặp để tiếp tục là điều kiện còn lại đúng.

Ví dụ: bạn có thể viết cùng một vòng lặp FOR ở trên, dưới dạng vòng lặp WHILE , bằng cách sử 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 là bắt buộc vì bộ đếm hàng bắt đầu ở số 2 và cần kết thúc ở hàng 7 nơi dữ liệu kết thúc. Tuy nhiên, số lượng của phạm vi (B2: B7) chỉ là 6 và vòng lặp While sẽ chỉ kết thúc khi bộ đếm LỚN(GREATER) hơn bộ đếm - vì vậy giá trị rowCounter cuối cùng cần phải là 8 (hoặc rng.Count + 2).

Bạn cũng có thể thiết lập vòng lặp While như sau:

While rowCounter <= rng.Count + 1

Bạn chỉ có thể tăng số lượng phạm vi (6) lên 1, bởi vì khi biến rowCounter đến cuối dữ liệu (hàng 7), vòng lặp có thể kết thúc.

Vòng lặp Do While và Do Until của VBA(VBA Do While and Do Until Loops)

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

  • Vòng lặp While(While Loop) kiểm tra xem một điều kiện có đúng ở đầu vòng lặp hay không.
  • Vòng lặp Do-While(Do-While Loop) kiểm tra xem một điều kiện có đúng không sau khi thực hiện các câu lệnh trong vòng lặp.
  • Vòng lặp Do-Until(Do-Until Loop) kiểm tra xem một điều kiện có còn sai hay không sau khi thực hiện vòng lặp.

Trong trường hợp này, bạn sẽ viết lại vòng lặp While ở trên như sau, như một vòng lặp Do-While.

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 này, logic không thay đổi nhiều, nhưng nếu bạn muốn đảm bảo so sánh logic diễn ra sau khi tất cả các câu lệnh được chạy (cho phép tất cả chúng chạy bất kể điều gì ít nhất một lần), thì Do-While hoặc vòng lặp Do-Until là lựa chọn phù hợp.

Tuyên bố trường hợp lựa chọn VBA(VBA Select Case Statements)

Loại câu lệnh logic cuối cùng mà bạn cần hiểu để bắt đầu cấu trúc mã VBA của mình là câu lệnh (VBA)Chọn trường hợp(Select Case) .

Với ví dụ trên, giả sử bạn muốn có một phương pháp chấm điểm không chỉ vượt qua thất bại. Thay vào đó, bạn muốn gán điểm chữ cái từ A đến F.

Bạn có thể thực hiện việc này với câu lệnh Chọn trường hợp(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 khi tập lệnh VBA này chạy trông giống như bên dưới.

Bây giờ bạn đã biết mọi thứ bạn cần biết để bắt đầu sử dụng VBA trong các ứng dụng Microsoft Office của mình .



About the author

Tôi là một chuyên gia máy tính với hơn 10 năm kinh nghiệm. Khi rảnh rỗi, tôi thích giúp việc tại bàn văn phòng và dạy bọn trẻ cách sử dụng Internet. Kỹ năng của tôi bao gồm nhiều thứ, nhưng điều quan trọng nhất là tôi biết cách giúp mọi người giải quyết vấn đề. Nếu bạn cần ai đó có thể giúp bạn trong việc khẩn cấp hoặc chỉ muốn một số mẹo cơ bản, vui lòng liên hệ với tôi!



Related posts