Nền tảng Lập trình VBA chạy trên hầu hết các sản phẩm của Microsoft Office là một trong những công cụ mạnh 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 đó của họ.
Hướng dẫn VBA này cho người mới bắt đầu sẽ chỉ cho bạn cách thêm menu Nhà phát triển vào ứng dụng Office của bạn, cách vào cửa sổ trình soạn thảo VBA và cách các câu lệnh và vòng lặp VBA cơ bản hoạt động để bạn có thể bắt đầu sử dụng VBA trong Excel, Word, Powerpoint, Outlook và OneNote .
Điều này Hướng dẫn VBA sử dụng phiên bản mới nhất của các sản phẩm 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 bật và sử dụng Trình chỉnh sửa VBA
Trong bất kỳ Văn phòng nào các sản phẩm đượ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 được tham chiếu. Menu nhà phát triển chỉ khả dụng trong Excel, Word, Outlook và Powerpoint. OneNote không cung cấp một 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 khảo API OneNote để tương tác với OneNote từ các chương trình Office khác.
Bạn sẽ tìm hiểu cách thực hiện điều này trong hướng dẫn VBA nâng cao sắp tới của chúng tô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 danh sách hiện có sẵn hoặc được kích hoạt.
In_content_1 all: [300x250] / dfp: [640x360]->Mẹo lập trình VBA chung cho người mới bắt đầu
Bạn sẽ nhận thấy khi trình soạn thảo VBA mở, 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 với ứng dụng khác.
Điều này là do các đối tượng khả dụng nơi bạn có thể đặt mã VBA phụ thuộc vào các đố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, don lồng bị bất ngờ bởi các menu khác nhau. Cấu trúc và cú pháp của mã VBA là 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 đối với các đối tượng đó thông qua mã VBA.
Trước khi chúng tôi đ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 nhìn vào cấu trúc và cú pháp VBA phổ biến nhất bạn có thể sử dụng khi viết mã VBA.
Nơi đặt mã VBA
Khi bạn ở 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à khi nào bạn muốn mã chạy.
Ví dụ: trong Excel, nếu bạn chọn Bảng tínhvà Kích hoạt, mã sẽ chạy bất cứ khi nào bảng tính được mở.
Bảng tính khác các hành động bạn có thể sử dụng để kích hoạt mã VBA của mình bao gồm khi bảng tính thay đổi, khi đóng (tắ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 vào trình chỉnh sửa, hãy luôn thực hiện chắc chắn đặ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ã đó.
Báo cáo IF của VBA
Một IF câu lệnh 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 xét 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 một toán tử AND hoặc OR để liên kết chúng lại với nhau.
Một ví dụ sẽ là kiểm tra xem một lớp trong bảng tính có ở trên hoặc dưới một lớp vượt qua và chuyển giao hoặc không thể chuyển sang trạng thái của một ô khác.
Nếu các ô (2, 2)>75 Sau đó các ô (2, 3) = Các tế bào của Pass Pass Else (2, 3) = Giảm thất bại
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 biểu tượng của _ _ ở cuối dòng.
Nếu các ô (2, 2)>75 thì _
Các ô (2, 3) = Thẻ Pass Pass Else _
Các ô (2, 3) = Không thành công
Sử dụng kỹ thuật này thường có thể giúp mã dễ đọc và gỡ lỗi hơn.
VBA cho các vòng lặp tiếp theo
Các câu lệnh IF là tuyệt vời cho các so sánh đơn lẻ, giống như ví dụ ở trên về việc xem xét một ô duy nhất. Nhưng điều gì sẽ xảy ra nếu bạn muốn lặp qua toàn bộ một 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 sẽ cần một vòng lặp FOR.
Để thực hiện việc này, bạn cần sử dụng độ dài của phạm vi và lặp qua độ dài đó theo số lượng hàng có chứa dữ liệu.
Để thực hiện việc này, bạn cần để xác định phạm vi và các biến ô và lặp qua chúng. Bạn cũng cần xác định một bộ đếm để bạn có thể xuất kết quả sang 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, cell As Range
Dim rowCount as Integer
Xác định kích thước phạm vi như sau.
Đặt rng = Phạm vi (Số B2: B7))
rowCorer = 2
Cuối cùng, bạn có thể tạo vòng lặp FOR của bạn để bước qua mọi ô trong phạm vi đó và thực hiện so sánh.
For Each cell In rngIf cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
Khi Kịch bản VBA này chạy, bạn sẽ thấy kết quả trong bảng tính thực tế.
VBA While Loops
A While Loop cũng lặp qua một loạt các 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à một đ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, như một vòng lặp WHILE, chỉ bằng cách sử dụng biến rowCorer như sau.
While rowCounter < rng.Count + 2If 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 + 2là bắt buộc vì bộ đếm hàng bắt đầu từ 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 TUYỆT VỜI hơn bộ đếm - vì vậy giá trị hàng 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 rowCount <= rng.Count + 1
Bạn có thể chỉ tăng số lượng phạm vi (6) lên 1, bởi vì một khi biến rowCorer đạt đến cuối dữ liệu (hàng 7), vòng lặp có thể kết thúc.
VBA Do While và Do Until Loops
Do While và Do Until vòng lặp gần giống với vòng lặp While, nhưng hoạt động hơi khác nhau.
Trong trường hợp này, bạn sẽ viết lại t he Vòng lặp phía trên như sau, như vòng lặp Do-While.
DoIf 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 chắc chắn logic so sánh 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ể ít nhất là một lần), sau đó vòng lặp Do-While hoặc Do-Until là tùy chọn phù hợp.
VBA Chọn Báo cáo trường hợp
Loại câu lệnh logic cuối cùng bạn sẽ cần hiểu để bắt đầu cấu trúc mã VBA của mình là Chọn câu lệnh tình huống.
Cho ví dụ ở trên, giả sử bạn muốn có một phương pháp phân loại không vượt qua thất bại. Thay vào đó, bạn muốn chỉ định một lớp chữ từ A đến F.
Bạn có thể làm điều này với câu lệnh Chọn trường hợp sau:
For Each cell In rngSelect 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 giống như tập lệ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.