Cách gỡ lỗi macro VBA trong Excel không hoạt động. Có những công cụ tuyệt vời trong Excel VBA cho phép bạn xem giá trị hiện tại được lưu trữ trong các biến khi bạn lướt qua mã từng dòng một. Nếu bạn có một macro không hoạt động,
Xem video
- Bạn có Macro VBA Excel không hoạt động
- VBA có các công cụ gỡ lỗi tuyệt vời
- Thay vì chạy mã của bạn, bạn có thể chuyển qua mã bằng F8
- Dòng màu vàng là dòng sắp chạy
- Di chuột qua bất kỳ biến nào để xem giá trị của biến đó.
- Chuyển qua lại Excel để xem điều gì đang xảy ra
Bản ghi video
Học Excel từ Podcast, Tập 2096: Gỡ lỗi VBA Macro
Chào mừng bạn trở lại netcast, tôi là Bill Jelen. Câu hỏi hôm nay: Ai đó có một số mã mà tôi đã đăng trên một video cũ trên YouTube và họ đã đăng một nhận xét rằng, “Ah, nó không hoạt động. Nó không lưu hóa đơn trùng lặp nhưng nó không gây ra lỗi ”. Tôi không biết có gì sai với mã. Được rồi, bạn biết đấy, hãy nhìn xem, có những công cụ tuyệt vời có sẵn khi bạn VBA Macro không hoạt động. Vì vậy, chúng tôi có một nút ở đây để chạy một số mã. Tôi sẽ Gán Macro, nó được gọi là SaveInvoice. Tôi sẽ nhấp vào Chỉnh sửa và chúng ta đã kết thúc trong VBA. Và thông thường khi chúng ta nhấn nút đó, nó sẽ chạy mã này. RẦM! Giống như tất cả diễn ra rất nhanh chóng nhưng bạn không thể xem những gì đang xảy ra.
Vì vậy, trong các công cụ Gỡ lỗi, một trong những thứ tôi thích nhất ở đây là Gỡ lỗi Bước vào, bạn sẽ thấy phím tắt là F8 và điều đó cho phép chúng tôi chạy mã từng dòng một. Vì vậy, tôi đã nhấn F8 ở đó và đây là dòng màu vàng là dòng mà nó sắp thực thi. Vì vậy, nếu tôi nhấn F8, nó sẽ nhảy qua hai khai báo đó và bây giờ chúng ta sắp thực hiện một ActiveSheet.Copy. Vì vậy, điều thực sự đẹp ở đây là, bạn biết đấy, đặc biệt nếu bạn có một màn hình lớn mà cửa sổ Podcast quá nhỏ nhưng những gì bạn có thể làm là bạn có thể xem Macro chạy. Vì vậy, ngay bây giờ nó sắp thực hiện ActiveSheet.Copy. Hiện tại, tôi đang sử dụng một sổ làm việc có tên là Podcast 2096. Đây là một trang tính có tên là Invoice và khi tôi nhấn F8, bạn sẽ thấy rằng tôi hiện đang sử dụng một sổ làm việc hoàn toàn mới có tên là Book2 và chúng tôi vừa có Invoice.
Và bây giờ chúng tôi sắp giao việc lớn và dài này cho New FN. Nhấn F8. Được rồi, có vẻ như không có gì xảy ra ở đây vì không có gì xảy ra ở đây. Nhưng đây là điều tuyệt vời, bây giờ tôi đã gán một thứ cho biến đó có tên là New FN và nếu tôi lấy chuột và di chuột qua New FN, một mẹo công cụ nhỏ sẽ xuất hiện cho tôi biết những gì được lưu trữ trong New FN. Vì vậy, nó lưu tên File, có thư mục nơi nó sẽ đến. Nó được gọi là Invoice1234 vì nó lấy giá trị từ F4 và sau đó thêm PDF.
Được rồi, một trong những điều khó chịu nhất về Excel là nếu bộ nhớ của bạn bắt đầu thấp, mẹo công cụ này sẽ không muốn xuất hiện. Bạn sẽ di chuột đến đó và sẽ không có gì xảy ra. Đôi khi bạn phải nhấp để tạo nó ở đây và đôi khi nó hoàn toàn không xuất hiện. Khi nó hoàn toàn không xuất hiện, những gì chúng ta có thể làm là Ctrl + G. Ctrl + G là cửa sổ ngay lập tức và sau đó chúng ta sẽ sử dụng? là phím tắt cho Debug.Print, NewFN. Vì vậy, nói cách khác, hãy cho tôi biết những gì trong New FN và nó sẽ cho bạn biết những gì trong New FN ngay tại đó.
Được rồi, bây giờ chúng ta sắp chạy dòng mã này sẽ tạo một tệp PDF. Được rồi, tôi sẽ nhấn F8. Được rồi, và tại thời điểm này, chúng ta sẽ có một tệp PDF mới với 1234 và nếu tôi tìm trong thư mục, chắc chắn rằng Inv1234 lúc 6:25 sáng ngày 11 tháng 5 vừa được tạo. Tuyệt vời, phải không?
Được rồi, bây giờ chúng ta đang gặp sự cố. Được rồi, chúng tôi nhấn F8 ở đây và nó sẽ hiển thị dưới dạng Bản sao trùng lặp. Được rồi, điều đó đã hiệu quả. Và sau đó là F8, và chúng ta có thể thấy những gì trong New FN. Được rồi, vì vậy nó có DupInv1234.pdf và bạn thậm chí có thể quay lại đây và chỉ cần nhấp vào sau Print NewFN và sau đó bạn sẽ thấy rằng chúng tôi đã thay đổi tên tệp. Vì vậy, mọi thứ đều mát mẻ. Và sau đó chúng tôi nhấn F8 để chạy Tạo PDF. Tuyệt vời! Mọi thứ trông rất tuyệt, phải không?
Vì vậy, hãy quay lại các tệp Podcast của chúng tôi. Được rồi, nhưng thay vì có thứ có tên là DupInv1234, tôi chỉ không biết cái gì đó được gọi là Book2. Được rồi, nó mới được tạo một phút trước. Đây phải là một nhưng gee! Nó có vẻ là tên sai. Được rồi, chúng ta quay lại VBA và tôi biết rằng tôi vừa chỉ định đúng giá trị cho New FN như vậy, được rồi. Và hãy xem chúng tôi đang lưu nó như thế nào. Chúng tôi đang bảo vệ nó thành một NewFN1 trống; và vì nó trống nên có nghĩa là nó lấy tên tệp trong trường hợp này là Book2 vì tôi đã tạo một bản sao của nó. Và đã thay đổi nó - Ồ nhìn kìa! Vì vậy, ở đây, tôi đã gán tên cho NewFN và sau đó lưu NewFN1 này, và bây giờ vì tôi đang gỡ lỗi và di chuột - Di chuột là điều tuyệt vời nhất từ trước đến nay. Tôi hy vọng sẽ có thể tìm ra những gì đang xảy ra.Vì vậy, tôi quay lại và thay đổi NewFN1. Bây giờ, đây là điều tuyệt vời. Được rồi, vì vậy đã vượt qua dòng này trong Macro nhưng tôi có thể kéo dòng này trở lại và nói, được rồi, hãy chạy lại F8. Và bây giờ hãy tạo PDF. Được rồi, ở đó nó hiển thị đúng tên và mọi thứ đều tuyệt.
Được rồi, bây giờ tôi biết rằng tôi đã hoàn thành, mọi thứ đều tuyệt vời. Mọi thứ sẽ hoạt động từ đây. Tôi chỉ cần nhấp vào Chạy và nó sẽ chạy đến cuối mã. Được rồi, đôi khi bạn sẽ có một Macro dài, bạn biết đấy, hàng trăm dòng mã đang hoạt động và sau đó một phần cụ thể không hoạt động, được chứ? Vì vậy, một vài công cụ khác vừa được đề cập ở đây. Nếu bạn cần chuyển qua cả đống mã và chạy mọi thứ cho đến thời điểm đó, thì có một cách để làm điều đó là nhấp vào đây và tạo một Breakpoint. Được rồi, bây giờ khi tôi chạy cái này, nó sẽ chạy mọi thứ xuống thời điểm đó. Tôi chỉ có thể nhấp vào chạy và nó sẽ dừng lại, hoặc nếu bạn thậm chí không muốn đặt Điểm ngắt, chúng tôi sẽ chỉ cần nhấp ngay vào đây và nói Gỡ lỗi, Chạy tới con trỏ. Chạy tới con trỏ.Giờ mới biết ở đây sẽ gây ra sự cố vì mã đổi số hóa đơn này, mình chưa móc ra. Vì vậy, tôi sẽ chỉ nhập một số hóa đơn mới và vì vậy tôi đang ở trên dòng đó ngay bây giờ. Gỡ lỗi, chạy tới con trỏ là Ctrl + F8. Được rồi, bây giờ nó đã chạy mọi thứ đến thời điểm đó và những gì chúng ta nên có là chúng ta sẽ có thể thấy rằng nó vừa tạo Inv1235, được rồi. Và bây giờ là về- chúng ta đang ở trên dòng mã này. Tôi có thể chỉ cần nhấn F8 để chạy một dòng hoặc chỉ chạy phần còn lại. Và có DupInv1235 của chúng tôi, được chứ? Vì vậy, các Công cụ gỡ lỗi ở đây trong VBA thật tuyệt vời. Hãy để bạn chạy mã một dòng tại một thời điểm, sắp xếp màn hình của bạn để chúng tôi có thể thấy cả mã đang chạy và kết quả của mã ở bên trái. Và bạn biết đấy, hy vọng rằng bạn có thể tìm ra những gì đang xảy ra với mã.
Được rồi, tóm tắt lại tập: Có Macro Excel VBA không hoạt động. Nó có các công cụ gỡ lỗi tuyệt vời. Thay vì chạy mã của bạn, bạn có thể chuyển qua mã bằng F8. Vạch màu vàng là vạch sắp chạy. Bạn có thể di chuột qua biến để xem giá trị của biến đó, chuyển qua lại Excel để xem điều gì đang xảy ra.
Vâng, này, tôi muốn cảm ơn bạn đã ghé qua. Chúng tôi sẽ gặp bạn lần sau cho một netcast khác từ.
Tải tập tin
Tải xuống tệp mẫu tại đây: Podcast2096.xlsm