Các loại lỗi trong VBA cho Excel - Danh sách và Ví dụ

Người dùng sẽ thường gặp các loại lỗi khác nhau trong VBA. Dưới đây, chúng tôi đưa ra một số chiến lược để đối phó và giải quyết chúng. Chúng tôi sẽ xem xét các kỹ thuật mà bạn có thể sử dụng để thẩm vấn mã của mình trong quá trình thử nghiệm, cũng như các phương pháp bắt lỗi trong thời gian chạy.

Các loại lỗi trong VBA cho Excel

Kiểm tra và theo dõi các loại lỗi khác nhau trong mã VBA có thể tốn nhiều thời gian và gây khó chịu. Không có gì lạ khi nghe các lập trình viên Lập trình Lập trình là quá trình viết các lệnh để máy tính thực hiện. Nó tương tự như một công thức cho con người. Một công thức chứa danh sách các hành động nói rằng hơn 30% thời gian của họ được dành cho việc thử nghiệm.

Theo thời gian, bạn sẽ tránh được lỗi tốt hơn, nhưng không chắc lần đầu tiên bạn sẽ viết được mã hoàn hảo. Bằng cách học cách tránh, đối phó và theo dõi các lỗi VBA, bạn sẽ tiết kiệm cho mình rất nhiều thời gian trong tương lai.

Các loại lỗi VBA

Để giúp mọi thứ dễ dàng hơn, chúng tôi đã phân loại các loại lỗi mã hóa thành ba nhóm. Đối với mỗi nhóm, chúng tôi sẽ khám phá một số ví dụ, sau đó thảo luận cách bạn có thể điều tra và giải quyết chúng.

1. Lỗi cú pháp - Một dòng mã cụ thể không được viết đúng

2. Lỗi biên dịch - Các vấn đề xảy ra khi ghép các dòng mã lại với nhau, mặc dù các dòng mã riêng lẻ dường như có ý nghĩa

3. Lỗi thời gian chạy - Khi mã thường đúng về nguyên tắc, nhưng một hành động được thực hiện bởi người dùng hoặc dữ liệu đang được sử dụng dẫn đến lỗi không mong muốn.

Lỗi cú pháp là gì?

Lỗi cú pháp là cách VBA cho bạn biết liệu mã của bạn có hợp lý hay không, ở cấp độ cơ bản nhất. Chúng ta có thể làm một so sánh đơn giản với các quy tắc viết một câu trong tiếng Anh:

  • Một chủ đề là bắt buộc.
  • Một động từ là bắt buộc.
  • Một vốn lá thư yêu cầu ngay từ đầu.
  • Dấu chấm câu được yêu cầu ở cuối.
  • Đối tượng, tính từ và các đặc điểm ngữ pháp khác là tùy chọn.

Jane đã tìm thấy 18 lỗi trong mã VBA của mình .

Theo cách tương tự, VBA áp đặt các quy tắc nhất định đối với những gì được yêu cầu trong một số tình huống nhất định. Ví dụ: khi bắt đầu câu lệnh IF có điều kiện cơ bản trong mã của bạn, bạn phải sao chép các quy tắc cú pháp sau đây cho dòng đầu tiên của câu lệnh IF;

  • Nó phải bắt đầu bằng If
  • Tiếp theo phải là một bài kiểm tra logic , chẳng hạn như x> 10
  • Cuối cùng, nó phải kết thúc bằng từ sau đó

Nếu NumberErrors> 20 thì

Nếu bạn vi phạm các quy tắc trên của tiếng Anh hoặc VBA, ngữ pháp (tiếng Anh) hoặc cú pháp (VBA) của bạn được coi là không chính xác.

Cách xác định lỗi cú pháp

Trình chỉnh sửa VBA đánh dấu các lỗi cú pháp bằng màu đỏ, cho phép bạn dễ dàng xác định và giải quyết chúng. Ngoài ra, nếu bạn cố gắng chạy mã của mình hoặc bắt đầu một dòng mới, bạn sẽ thấy thông báo lỗi cú pháp bên dưới.

Lỗi cú pháp cơ bản:

Lỗi cú pháp cơ bản

Hộp thông báo lỗi cú pháp:

Hộp thông báo lỗi cú pháp

Để đảm bảo kiểm tra xảy ra khi bạn đang nhập, hãy bật “Kiểm tra cú pháp tự động” trong menu Tùy chọn.

Kiểm tra cú pháp tự động

Cách giải quyết lỗi cú pháp

Lỗi cú pháp thể hiện những sai lầm trong cách viết một dòng mã cụ thể của bạn. Chúng phải được sửa trước khi bạn có thể chạy mã của mình. Với kinh nghiệm, dòng chữ màu đỏ sẽ là tất cả những gì bạn cần để phát hiện lỗi. Nhưng nếu bạn vẫn gặp khó khăn, chỉ cần tìm kiếm trực tuyến “cú pháp câu lệnh if vba” hoặc bất kỳ biến thể nào phù hợp với nhu cầu của bạn và bạn sẽ tìm thấy rất nhiều ví dụ về dòng cụ thể mà bạn đang cố gắng viết.

Lỗi biên dịch là gì?

Lỗi biên dịch đề cập đến một nhóm lỗi VBA rộng hơn, bao gồm cả lỗi cú pháp. Lỗi biên dịch cũng xác định các vấn đề với mã của bạn khi xem xét một cách tổng thể. Cú pháp của từng dòng riêng lẻ có thể đúng, nhưng khi ghép lại với nhau, các dòng mã của bạn không có ý nghĩa. Lỗi biên dịch được đánh dấu khi bạn biên dịch hoặc chạy mã của mình.

Cách xác định lỗi biên dịch

Khi bạn chạy mã VBA của mình, lỗi biên dịch sẽ được hiển thị trong hộp thoại VBA theo ví dụ dưới đây.

Ngoài ra, nếu dự án của bạn dài hoặc phức tạp và liên quan đến nhiều quy trình, việc biên dịch mã của bạn trước khi chạy có thể hữu ích. Nó ngăn chặn các tình huống trong đó một nửa mã của bạn chạy thành công và sau đó xuất hiện lỗi. Bạn có thể biên dịch mã VBA của mình bằng cách nhấp vào Trình đơn gỡ lỗi → Biên dịch dự án VBA.

ví dụ 1

Lỗi biên dịch thiếu phần “Kết thúc nếu” của câu lệnh IF. Mỗi dòng riêng lẻ trong mã đều đúng, nhưng cùng với nhau, chúng không đại diện cho một câu lệnh IF hoàn chỉnh.

Lỗi biên dịch - Ví dụ 1

Ví dụ 2

Trong ví dụ này, quá trình biên dịch VBA đã phát hiện ra lỗi cú pháp, được đánh dấu màu đỏ. VBA chỉ ra rằng mã bên dưới thiếu dấu ngoặc đóng trên hàm.

Lỗi biên dịch - Ví dụ 2

Ví dụ 3

Lỗi biên dịch thường gặp khi sử dụng Option Explicit và xảy ra khi một biến chưa được xác định rõ ràng. Khi kích hoạt Option Explicit, câu lệnh Dim được yêu cầu để khai báo tất cả các biến trước khi chúng có thể được sử dụng trong mã của bạn.

Lỗi biên dịch - Ví dụ 3

Cách giải quyết lỗi biên dịch

Lỗi biên dịch VBA sẽ ngăn không cho các quy trình bị ảnh hưởng chạy. Cho đến khi bạn sửa chúng, mã của bạn không thể được giải thích chính xác bằng VBA. Các hộp thông báo lỗi thường cung cấp nhiều lời khuyên hữu ích hơn là lỗi cú pháp.

Nếu bạn không rõ vấn đề là gì từ thông báo lỗi, hãy thử sử dụng Trung tâm trợ giúp của Microsoft để biết chính xác cách viết câu lệnh hoặc hàm của bạn. Đây là ví dụ về thông báo lỗi "Chặn nếu không kết thúc nếu" trên trang web của Microsoft.

Chặn nếu không có kết thúc nếu

Lỗi thời gian chạy là gì?

Khi bạn đã sửa lỗi cú pháp và lỗi biên dịch, bạn đã sẵn sàng để bắt đầu thử nghiệm hoặc chạy mã của mình đúng cách để xem nó thực thi các hành động hoặc tính toán mong muốn của bạn tốt như thế nào. Chúng tôi gọi khoảng thời gian thử nghiệm hoặc thực thi trực tiếp mã là “thời gian chạy”.

Lỗi thời gian chạy không thể được phát hiện bằng cách đơn giản nhìn vào mã; chúng là kết quả của việc mã của bạn tương tác với các đầu vào hoặc dữ liệu cụ thể tại thời điểm đó.

Lỗi thời gian chạy thường do dữ liệu không mong muốn được chuyển đến mã VBA, kiểu dữ liệu không khớp, chia cho số không không mong muốn và phạm vi ô đã xác định không khả dụng. Lỗi thời gian chạy cũng đa dạng và phức tạp nhất để theo dõi và sửa chữa.

Cách xác định lỗi thời gian chạy

VBA Gỡ lỗi VBA: Cách gỡ lỗi mã Khi viết và chạy mã VBA, điều quan trọng là người dùng phải tìm hiểu cách gỡ lỗi mã. Người dùng Excel mong đợi rằng hàm mã làm nổi bật mã sự cố bằng màu vàng và cung cấp cho chúng ta một manh mối nhỏ về điều gì đang gây ra sự cố.

ví dụ 1

Mặc dù mã bên dưới chỉ đơn giản chia một số cho số kia, nhưng có một số trường hợp không thể thực hiện được. Ví dụ: nếu ô A1 = 2 và ô A2 = 0, thì không thể chia cho số không. Hộp lỗi thời gian chạy bao gồm một nút gỡ lỗi, làm nổi bật mã sự cố.

Lỗi thời gian chạy - Ví dụ 1

Lỗi thời gian chạy - Ví dụ 1a

Ví dụ 2

Trong ví dụ này, tôi đã tạo một mảng để thu thập tên của n công ty trong trang tính của mình. Sau đó, tôi đã cố gắng tham chiếu đến mục thứ sáu, có thể tồn tại hoặc không tồn tại tại thời điểm chạy. VBA đưa ra thông báo lỗi thời gian chạy và cho phép tôi nhấn Gỡ lỗi để điều tra sự cố.

Lỗi thời gian chạy - Ví dụ 2

Khi tôi nhấn Gỡ lỗi, VBA sẽ đánh dấu dòng mã đang gây ra sự cố. Bây giờ tôi sử dụng thông báo "Đăng ký ngoài phạm vi" để tìm ra những gì đang xảy ra. Lỗi chỉ số dưới nằm ngoài phạm vi thường có nghĩa là về nguyên tắc, mã của bạn tốt, nhưng không thể tìm thấy mục cụ thể mà bạn đang tìm kiếm. Thông thường nhất, nó sẽ xảy ra khi tham chiếu các ô hoặc phạm vi trong Excel, cũng như các mảng trong mã VBA của bạn.

Lỗi thời gian chạy - Ví dụ 2a

Để đảm bảo chức năng Gỡ lỗi được bật, trong trình đơn Tùy chọn> Chung> Bẫy Lỗi, trạng thái mặc định phải là “Phá vỡ các lỗi chưa được xử lý”. Để tùy chọn được chọn.

Giải quyết các lỗi chưa được xử lý

Cách giải quyết lỗi thời gian chạy

Vì lỗi thời gian chạy rất đa dạng và phức tạp nên các giải pháp cũng rất đa dạng. Hai phương pháp chung để giảm lỗi thời gian chạy là:

Bẫy lỗi

Bạn nên suy nghĩ về những tình huống có thể xảy ra mà mã của bạn có thể gặp phải. Tốt hơn nữa là kiểm tra mã của bạn trên dữ liệu thực hành hoặc với người dùng thực. Nó sẽ cho phép bạn nhận ra các tình huống như vậy trong VBA của mình, với mã phân nhánh thành các kết quả khác nhau, tùy thuộc vào việc có lỗi hay không.

ví dụ 1

Tại đây, dòng 'On Error Resume Next' buộc mã tiếp tục, ngay cả khi lỗi được phát hiện. Sau đó, chúng tôi sử dụng kiểm tra Nếu Err> 0 để tạo thông báo cảnh báo, chỉ khi lỗi tồn tại. 'On Error Goto 0' đặt lại VBA về trạng thái mặc định của nó.

Bẫy lỗi - Ví dụ 1

Ví dụ 2

Ở đây, mã đang tính toán thu nhập mỗi ngày, dựa trên thu nhập hàng tháng và một số ngày được xác định. Nếu số ngày không được cung cấp, chúng tôi sẽ chuyển đến một điểm xác định trong mã của chúng tôi có tên “NoDaysInMonthProvided :,” nơi chúng tôi sử dụng số ngày trung bình trong một tháng làm giả định cơ sở. Mặc dù nó đơn giản nhưng nó chỉ ra rõ ràng cách bẫy lỗi và chuyển sang một điểm khác trong mã của bạn.

Bẫy lỗi - Ví dụ 2

Xóa hướng dẫn sử dụng

Các nhãn trang tính và tài liệu rõ ràng sẽ đảm bảo rằng người dùng của bạn tương tác với mô hình của bạn theo cách bạn dự định. Nó sẽ giúp ngăn chặn chúng khi nhập văn bản, thay vì số hoặc để lại các số 0 có thể ảnh hưởng đến mã của bạn sau này.

Tóm lược

Có ba loại lỗi chính trong VBA có thể ảnh hưởng đến mã của bạn theo những cách khác nhau. Điều quan trọng là phải kích hoạt các tùy chọn phát hiện lỗi của VBA, chẳng hạn như trình gỡ lỗi và kiểm tra cú pháp tự động. Họ sẽ giúp bạn xác định vị trí và bản chất của các lỗi.

Nhiêu tai nguyên hơn

Finance là nhà cung cấp chính thức của Chứng nhận CBCA ™ Ngân hàng & Tín dụng được Chứng nhận toàn cầu (CBCA) ™ Chứng chỉ CBCA ™ được Chứng nhận về Ngân hàng & Nhà phân tích Tín dụng (CBCA) ™ là tiêu chuẩn toàn cầu dành cho các nhà phân tích tín dụng bao gồm tài chính, kế toán, phân tích tín dụng, phân tích dòng tiền , lập mô hình giao ước, hoàn trả khoản vay và hơn thế nữa. chương trình chứng nhận, được thiết kế để giúp bất kỳ ai trở thành nhà phân tích tài chính đẳng cấp thế giới. Để tiếp tục thăng tiến sự nghiệp của bạn, các tài nguyên bổ sung bên dưới sẽ hữu ích:

  • Lỗi #REF Excel #REF Lỗi Excel #REF Lỗi Excel gây ra sự cố lớn trong bảng tính. Tìm hiểu cách tìm và sửa lỗi #REF trong Excel trong hướng dẫn nhanh này với các ví dụ và ảnh chụp màn hình. Một #REF! lỗi ("ref" là viết tắt của tham chiếu) là thông báo Excel hiển thị khi một công thức tham chiếu đến một ô không còn tồn tại, gây ra bởi việc xóa các ô
  • Excel VBA Ví dụ Excel VBA Ví dụ Excel VBA cho phép người dùng tạo macro để tự động hóa các quy trình trong Excel. Hướng dẫn này sẽ sử dụng các ví dụ VBA trong Excel để chỉ ra cách ghi macro bằng cách thiết lập macro, cách khai báo biến và cách tham chiếu dữ liệu.
  • Mẹo viết VBA trong Excel Mẹo viết VBA trong Excel Được liệt kê dưới đây là chín mẹo để viết VBA trong Excel. VBA cho Excel giới thiệu vô số khả năng tính toán tùy chỉnh và tự động hóa.
  • Phương thức VBA Phương thức VBA Phương thức VBA là một đoạn mã được gắn với một đối tượng VBA, biến hoặc tham chiếu dữ liệu cho Excel biết hành động nào cần thực hiện liên quan đến đối tượng đó. Sao chép, dán và chọn chỉ là một số ví dụ về các phương pháp VBA có thể được thực hiện.