Trong Excel VBA, thực tiễn tốt là để lại các hướng dẫn Debug.Print
trong mã đi vào "sản xuất"? Đó là khá hữu ích để gỡ lỗi các tờ thời gian thực tại máy của người dùng khi có sự cố. Liệu nó ảnh hưởng đến hiệu suất khi Visual Studio được đóng lại? Nếu không, bạn sẽ tư vấn cho điều gì?Thực tiễn tốt là để lại hướng dẫn "Debug.Print" trong mã đi vào "sản xuất"?
Trả lời
Gỡ lỗi.Hướng dẫn in Có chi phí hiệu suất nhỏ. Vì vậy, tôi sẽ tránh chúng trong vòng lặp được thực hiện một tỷ lần. Ngoại trừ những trường hợp đó, tôi nghĩ sẽ ổn thôi.
Bạn cũng có thể sử dụng chỉ thị biên dịch có điều kiện (#if
) kết hợp với hằng số trình biên dịch (#const
) để bật/tắt chúng trên toàn cầu mà không ảnh hưởng đến hiệu suất.
#CONST developMode = True
sub Xyz
#If developMode Then
Debug.Print "something"
#End If
End Sub
@iDevelop +1 Tìm hiểu điều gì đó mới mỗi ngày - không nhận ra Excel hỗ trợ biên dịch có điều kiện! Cảm ơn. – dash
có vẻ thú vị, cảm ơn! – Jerome
Xóa đủ để nhận +1 +1 :). Btw, biên dịch có điều kiện (và một số công cụ hữu ích khác) đã được thảo luận trong chủ đề thú vị này: http://stackoverflow.com/questions/1070863/hidden-features-of-vba – JMax
Tôi thường có hai phiên bản; prod mà không gỡ lỗi, và prod với gỡ lỗi. Điều đó, kết hợp với việc ghi nhật ký xử lý lỗi catchall, có nghĩa là nếu người dùng gặp vấn đề, tôi có thể triển khai phiên bản gỡ lỗi cho họ và họ có thể chạy nó.
Tôi có macro mà tôi chạy các nhận xét đó trong các câu lệnh debug.print, do đó, nó không phải là chi phí bảo trì thực.
Sự cố khi chạy phiên bản gỡ lỗi mọi lúc (và, với Excel VBA thường không phải là điều hiệu suất) là ứng dụng của bạn liên tục phát ra thông tin không cần thiết. Trong một môi trường với các bảng tính được kiểm soát, ví dụ, điều này có thể được coi là một điều xấu.
Về xử lý lỗi toàn cầu, bạn vẫn cần On Error GoTo tuyên bố cho mọi chức năng mà bạn muốn xử lý lỗi trong Bạn có thể, tuy nhiên, đường ống này để một chức năng chung:.
Public Function HandleTheNastyErrors(E As ErrObject, ByVal writeLog As Boolean = True)
Select Case E.Number
Case xxx
...specific error handling...
Case Else
... Display a message to the user about how you dont know what happened....
End Select
If writeLog Then
...Log Writing Code...
End If
End Function
Và sau đó, onerror:
ErrorHandler:
Call HandleTheNastyErrors(Err, True)
hiện làm các trick
Bạn có thể nhận xét về "bắt tất cả" của mình không? Tôi không thực sự có ý tưởng về cách xử lý lỗi một cách thông minh và bằng cách nào đó một cách tổng quát cho đến nay. Cảm ơn ! – Jerome
@jeromeG Có bạn đi. Hy vọng nó giúp. – dash
truyền đối tượng lỗi nó tới functon ... đó là một ý tưởng thú vị. –
- 1. C#: Thực tiễn tốt nhất Debug.Print
- 2. Canvas - thực tiễn kết xuất tốt?
- 3. Cách tốt nhất để thực thi mã điều khiển Xuân lặp đi lặp lại là gì?
- 4. TeamCity: Thực tiễn tốt nhất để triển khai trình cài đặt được sản xuất (hiện vật)
- 5. ASP.NET: thực tiễn tốt nhất để chuyển hướng đến https
- 6. Hướng dẫn tốt về quản lý mã?
- 7. Thực tiễn tốt nhất cho mã hóa MySQL?
- 8. Thực tiễn tốt nhất hiện tại cho việc triển khai sản xuất của nút đến AWS
- 9. Thực tiễn tốt nhất cho điều hướng tab?
- 10. gas vs nasm: mà assembler sản xuất mã tốt nhất?
- 11. Thực tiễn tốt nhất cho các đường dẫn PHP
- 12. "Mã sản xuất" là gì?
- 13. Xuất bản lên IIS - Thực tiễn tốt nhất
- 14. System.Diagnostics.Debug.WriteLine trong mã sản xuất
- 15. Hướng dẫn thực hành tốt nhất: Swing
- 16. Thực tiễn tốt nhất cho mã xác nhận email
- 17. Thực tiễn tốt nhất để thêm .gitignore vào Repo
- 18. Tải lại mã trên máy chủ vành đai sản xuất
- 19. Thực tiễn tốt nhất trong việc thiết kế mô hình dữ liệu Cassandra là gì?
- 20. Có bất kỳ hướng dẫn nào khi mã tái sản xuất phải được đưa vào ấn bản không?
- 21. Thực tiễn tốt nhất về hợp đồng mã
- 22. DTO: thực tiễn tốt nhất
- 23. là @unlink là một thực tiễn không tốt?
- 24. Thực tiễn tốt nhất cho Đi qua dữ liệu giữa trang
- 25. Thực tiễn tốt là kết thúc các thẻ tự đóng kết xuất bằng "/>"?
- 26. Thực tiễn tốt nhất để phát triển sự kiện theo định hướng trong ứng dụng Angular.js là gì?
- 27. JavaScript Thực tiễn tốt nhất
- 28. Thực tiễn tốt nhất để tải tệp lên trong CakePHP
- 29. Thực tiễn không tốt là đặt mã xem trong bộ điều khiển?
- 30. Thực tiễn tốt nhất về CDN là gì?
bạn nói "Visual Studio" nhưng bạn đang nói về VBA, phải không? Bạn có nghĩa là VBE? – aevanko
Ahhh, vâng tôi đoán tôi chỉ hiểu những gì mọi người gọi là VBE bây giờ ... Có, tôi đoán vậy :) [ALT + F11] – Jerome
1) Nếu điều quan trọng là nắm bắt những gì người dùng đang làm khi mọi thứ đã xảy ra, nhật ký giao dịch sẽ thấy một lựa chọn tốt hơn. Bắt đầu một tệp mới cho mỗi lần chạy hoặc mỗi ngày; xóa bất kỳ hơn 48 giờ cũ. Có một chi phí hiệu suất nhưng làm thế nào bạn sẽ đo lường nó. 2) Visual Studio là môi trường phát triển của MS cho các ngôn ngữ chuyên nghiệp của nó. VB 2010 nhanh hơn hàng trăm lần so với VBA/VBE và có hàng ngàn cơ sở thú vị. Bạn có thể truy cập Excel từ nó nếu bạn muốn sử dụng một bảng tính. –