Thủ Thuật

Tất tần tật cách sửa lỗi VBA trong Excel

Ngay cả người dùng đã có nhiều kinh nghiệm với mã VBA trong Excel đôi khi vẫn có sai sót, lỗi vẫn có thể xảy ra bình thường, bài viết dưới đây Mobitool sẽ hướng dẫn bạn tất tần tật cách sửa lỗi VBA trong Excel.

VBA trong Excel cho phép người dùng tự động hóa nhiệm vụ với các thao tác lặp đi lặp lại, giúp cải thiện hiệu suất công việc đáng kể. Tuy nhiên lỗi trong quá trình sử dụng VBA trong Excel là không thể tránh khỏi. Bạn đọc cùng tham khảo bài viết Tất tần tật cách sửa lỗi VBA trong Excel dưới đây của Mobitool để tìm hiểu các cách sửa lỗi VBA nhé.

Tất tần tật cách sửa lỗi VBA trong Excel 1

Mục Lục bài viết:

1. Các loại lỗi VBA trong Excel

  1.1. Lỗi cú pháp (Syntax Error)

  1.2. Lỗi biên dịch (Compile Error)

  1.3. Lỗi Run-time Error

  1.4. Lỗi Logical Error

2. Tất tần tật cách sửa lỗi VBA trong Excel

  2.1. Cách 1: Sử dụng Debug để tìm lỗi biên dịch / lỗi cú pháp

  2.2. Cách 2: Cấu hình các cài đặt lỗi (lỗi Handled và Unhandled)

3. Xử lý lỗi VBA bằng các lệnh On Error

4. Các thuộc tính và phương thức đối tượng Err Object

5. Tổng kết

1. Các loại lỗi VBA trong Excel

Trước khi đi sâu tìm hiểu và khám phá các cách và các bước sửa lỗi VBA, trước hết bạn đọc cùng Mobitool tìm hiểu và khám phá 1 số ít loại lỗi VBA phổ cập trong Excel. Có 4 loại lỗi Excel VBA, gồm có :

– Lỗi cú pháp (Syntax Error).
– Lỗi biên dịch (Compile Error).
– Lỗi Run-time Error.
– Lỗi Logical Error.

1.1 Lỗi cú pháp (Syntax Error)

Đúng như tên gọi của nó, lỗi cú pháp ( Syntax Error ) xảy ra khi VBA phát hiện lỗi hoặc cú pháp sai trong mã. Ví dụ, ví dụ điển hình nếu bạn quên một phần câu lệnh / cú pháp thiết yếu, sau đó trên màn hình hiển thị sẽ hiển thị lỗi biên dịch ( Compile Error ).

Trong đoạn mã dưới đây, sau khi nhấn Enter sau dòng lệnh thứ 2, trên màn hình sẽ hiển thị thông báo lỗi biên dịch. Nguyên nhân gây ra lỗi là do lệnh IF phải có lệnh Then đi cùng, tuy nhiên trong đoạn mã này lệnh Then bị thiếu.

tat tan tat cach sua loi vba trong excel

Lưu ý: Khi nhập mã trong Excel VBA, nó sẽ kiểm tra từng câu lệnh một ngay sau khi chúng ta nhấn Enter. Nếu VBA phát hiện lệnh hoặc phần nào đó trong cú pháp bị thiếu, ngay lập tức nó sẽ hiển thị thông báo trên màn hình để chúng ta có thể biết được nguyên nhân là do đâu.

Để đảm bảo lỗi cú pháp hiển thị mỗi khi có lỗi hoặc sai sót nào xảy ra, cần đảm bảo bạn đã kích hoạt Autosyntax. Để làm được điều này, click chọn Tools, sau đó click chọn Options. Trong hộp thoại Options, đảm bảo tùy chọn Auto Syntax Check đã được kích hoạt.

tat tan tat cach sua loi vba trong excel 2

Trường hợp nếu tùy chọn Auto Syntax Check bị vô hiệu, bị tắt, VBA vẫn sẽ hiển thị dòng có cú pháp lỗi nhưng không hiển thị hộp thoại thông tin lỗi.

1.2 Lỗi biên dịch (Compile Error)

Lỗi biên dịch ( Compile error ) xảy ra khi thiếu thành phần thiết yếu nào đó để chạy mã.

Cho ví dụ khi chạy đoạn mã dưới đây trên màn hình sẽ hiển thị thông báo lỗi. Nguyên nhân là sử dụng lệnh IF Then mà không có lệnh End If.

Lỗi cú pháp ( syntax error ) cũng là một dạng lỗi biên dịch. Lỗi cú pháp xảy ra ngay sau khi tất cả chúng ta nhấn Enter và VBA phát hiện thiếu một phần hoặc cú pháp nào đó. Lỗi biên dịch cũng xảy ra khi VBA không tìm thấy thành phần nào đó khi nhập mã, nhưng xảy ra khi mã được biên dịch hoặc thực thi.

tat tan tat cach sua loi vba trong excel 3

VBA kiểm tra từng dòng lệnh một khi tất cả chúng ta đang nhập mã là ghi lại lỗi cú pháp ngay sau khi phát hiện có một dòng nào đó không đúng và khi tất cả chúng ta nhấn Enter. Ngược lại lỗi biên dịch chỉ được xác lập khi VBA nghiên cứu và phân tích hàng loạt đoạn mã. Dưới đây là 1 số ít trường hợp thông dụng hay xảy ra lỗi biên dịch :

– Sử dụng lệnh IF mà không có lệnh End IF.

– Sử dụng lệnh For với Next.

– Sử dụng lệnh Select mà không có lệnh End Select.

– Không khai báo biến ( chỉ hoạt động giải trí khi tùy chọn Option Explicit được kích hoạt ). – Gọi một hàm không sống sót ( hoặc sai tham số ).

Lưu ý: Khi thêm tùy chọn Option Explicit, chúng ta sẽ được yêu cầu khai báo tất cả các biến trước khi chạy mã. Nếu có biến chưa được khai báo, VBA sẽ hiển thị thông báo lỗi.

1.3 Lỗi Run-time Error

Lỗi run-time xảy ra khi mã đang chạy.

Ví dụ nếu chạy đoạn mã được sử dụng để mở workbook Excel nhưng workbook không khả dụng ( đã bị xóa hoặc được đổi tên ), mã sẽ trả về thông tin lỗi run-time.

tat tan tat cach sua loi vba trong excel 4

Khi lỗi run-time xảy ra, mã sẽ dừng chạy và trên màn hình hiển thị sẽ hiển thị hộp thoại thông tin lỗi lý giải nguyên do gây lỗi là do đâu.

Bằng cách click chọn nút Debug để làm nổi bật phần mã gây ra lỗi.

tat tan tat cach sua loi vba trong excel 5

Sau khi sửa lỗi, bạn có thể click chọn nút Run trên thanh công cụ hoặc nhấn phím F5 để tiếp tục chạy mã. Hoặc có thể click chọn nút End để thoát khỏi mã.

Lưu ý quan trọng: Trong trường hợp nếu click chọn nút End trên hộp thoại, nó sẽ dừng lại ở đoạn mã bị lỗi. Tất cả các dòng mã trước đó sẽ được thực thi.

1.4 Lỗi Logical Error

Lỗi logic không làm cho mã dừng lại, nhưng hoàn toàn có thể trả về các tác dụng sai. Đây cũng là loại lỗi khó khắc phục nhất. Trình biên dịch không lưu lại các lỗi này và tất cả chúng ta phải thực thi theo cách bằng tay thủ công. Có 1 số ít cách để khắc phục lỗi logical trong Excel : – Chèn Message Box vào các vị trí trong đó mã và các giá trị / tài liệu được làm điển hình nổi bật. – Thay vì chạy cả đoạn mã cùng một lúc, tất cả chúng ta chạy từng dòng mã một. Để làm được điều này, click chọn vị trí bất kể trong mã và nhấn phím F8 để thực thi từng dòng mã một. Điều này được cho phép tất cả chúng ta hoàn toàn có thể thuận tiện xác lập các lỗi trong từng dòng mã.

2. Tất tần tật cách sửa lỗi VBA trong Excel

Cách 1: Sử dụng Debug để tìm lỗi biên dịch / lỗi cú pháp

Giải pháp lý tưởng là thực hiện biên dịch mã trước khi chạy. Để biên dịch mã, click chọn tùy chọn Debug trên thanh công cụ, sau đó click chọn Compile VBAProject.

tat tan tat cach sua loi vba trong excel 6

Khi biên dịch VBA project, nó sẽ đi qua các mã và xác lập các lỗi ( nếu có ). Trong trường hợp nếu phát hiện thấy lỗi, VBA sẽ hiển thị hộp thoại thông tin lỗi, sau khi đã sửa lỗi tất cả chúng ta sẽ phải chạy lại trình biên dịch lần nữa để tìm các lỗi khác ( nếu có ). Nếu mã không có lỗi, tùy chọn Compile VBAProject sẽ chuyển sang màu xám.

Lưu ý: Biên dịch mã chỉ phát hiện được các lỗi cú pháp và lỗi biên dịch, không thể phát hiện các lỗi run-time.

Cách 2: Cấu hình các cài đặt lỗi (lỗi Handled và Unhandled)

Ngoài ra trước khi khởi đầu thực thi các mã, tất cả chúng ta nên kiểm tra setup Excel VBA.

Truy cập thanh công cụ VBA, sau đó click chọn Tools =>Options.

Trên hộp thoại Options, click chọn tab General, đảm bảo tùy chọn Break on Unhandled Errors trong Error Trapping đã được chọn.

– Tùy chọn Break on All Errors: dừng thực thi mã trên tất cả các loại lỗi, ngay cả khi bạn đã áp dụng các kỹ thuật để xử lý các lỗi này.

– Tùy chọn Break in Class Module: Dừng thực thi mã trên tất cả các lỗi chưa được xử lý (Unhandled), đồng thời nếu sử dụng các đối tượng như Userforms, nó cũng sẽ phá vỡ các đối tượng này và đánh dấu chính xác dòng gây ra lỗi.

– Tùy chọn Break on Unhandled Errors: Chỉ dừng mã đối với các lỗi không được xử lý. Đây là cài đặt mặc định để đảm bảo các lỗi chưa được xử lý chưa được hiển thị trên thông báo. Nếu sử dụng các đối tượng như Userforms, tùy chọn này không đánh dấu dòng gây ra lỗi trong đối tượng mà chỉ đánh dấu dòng tham chiếu đến đối tượng đó.

Lưu ý: Nếu làm việc với các đối tượng như Userforms, bạn có thể thay đổi cài đặt này thành Break on Class Modules. Ngoài ra bạn cũng có thể sử dụng tùy chọn thứ 2, nó sẽ hiển thị dòng cụ thể trong đối tượng là nguyên nhân gây lỗi.

3. Xử lý lỗi VBA bằng các lệnh On Error

Xem chi tiết cách xử lý lỗi VBA bằng cách lệnh Error tại đây

4. Tìm hiểu thuộc tính và phương thức Err Object (đối tượng Err)

Xem bài viết tìm hiểu thuộc tính và phương thức đối tượng Err Object tại đây.

5. Tổng kết

Dưới đây là tổng hợp 1 số ít cách để giải quyết và xử lý lỗi VBA trong Excel :

1. Sử dụng lệnh On Error Go [Label] ở đầu mã để đảm bảo có bất lỳ lỗi nào xảy ra cũng được xử lý.

2. Chỉ sử dụng lệnh On Error Resume Next khi biết chắc chắn các lỗi có thể xảy ra. Trong trường hợp nếu sử dụng lệnh với các lỗi phát sinh, lệnh sẽ bỏ qua lỗi và mã tiếp tục chạy. Ngoài ra chúng ta có thể sử dụng kết hợp lệnh On Error Resume Next với Err.Raise nếu muốn bỏ qua loại lỗi cụ thể.

3. Khi sử dụng trình xử lý lỗi, cần đảm bảo sử dụng Exit Sub trước khi xử lý. Điều này để đảm bảo trình xử lý mã lỗi chỉ được thực thi khi có lỗi xảy ra, nếu không nó sẽ luôn được thực thi.

4. Sử dụng nhiều trình giải quyết và xử lý để bẫy các loại lỗi khác nhau. Bài viết trên đây Mobitool vừa hướng dẫn bạn tất tần tật cách sửa lỗi VBA trong Excel. Nếu có bất kể vướng mắc hoặc câu hỏi nào cần giải đáp, bạn đọc hoàn toàn có thể để lại quan điểm của mình trong phần phản hồi bên dưới bài viết nhé.

Ngoài ra, bạn có thể tìm hiểu về cách mở VBA trong Excel được hướng dẫn cụ thể trên Mobitool, cách mở VBA trong Excel cũng khá đơn giản, bạn có thể thực hiện dễ dàng để phục vụ cho các công việc lập trình của mình.

Những bài viết liên quan

Nút quay lại đầu trang