Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Danh Cong

[Hỏi] Cách kiểm tra giá trị biến trong VBA.

Các bài được khuyến nghị

Em đang lập trình 1 đoan VBA trong Excel. Do không tìm hiểu sâu nên lập trình còn thường xuyên sảy ra lỗi.

Một số lỗi thì VBA tự động chỉ cho người lập, còn 1 số lỗi thì không.

Em lập trình trong lisp thì thấy có tính năng "Add Watch" để xem giá trị biến trong mỗi lần chạy lisp. Tính năng này khá hay để kiểm tra lisp mình lập đúng đến đoạn nào. Trong VBA cũng có tính năng "Add Watch" , nhưng em không hiểu cách dùng.

Giả sử mình có biến A, B, C.  Khi chạy VBA tại 1 ô excel nhất định thì xảy ra lỗi. Vậy em muốn hỏi kiểm tra giá trị biến A, B, C tại ô excel đó như thế nào ạ.

Em cám ơn !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Kiểm tra giá trị biến A, B, C trong hàm thì được, còn tại ô exel đó thì ý là ntn?

Đưa project lên rồi giải thích rõ

Hay ý Danh muốn biết giá trị ô excel

Range("A1")

Range("A1").Value

Range("A1").Formular

....

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
20 phút trước, ndtnv đã nói:

Kiểm tra giá trị biến A, B, C trong hàm thì được, còn tại ô exel đó thì ý là ntn?

Đưa project lên rồi giải thích rõ

 

16 phút trước, dinhvantrang đã nói:

Post cái code lên là nhanh nhất bác ợ

+ File đây các bác ạ.

+ Mục đích: Tra góc cắt Teta - Trong tính toán góc cắt của kết cấu bê tông cốt thép . Tiêu chuẩn 22TCN 272-05 dành cho thiết kế cấu đường. Mục 5.8.3.4 cho bác nào muốn tham khảo.

 

Giải thích: Trong ô D1 - giá trị là #VaLue! . Tức là có lỗi trong ô này. Em muốn kiểm tra vì sao lại lỗi.

 Vào code: Giả sử em muốn kiểm tra giá trị biến i, j, Vmax, Vmin.... là bao nhiêu, khi chạy tại ô này. Thì em phải làm thế nào ạ.

+ Trong đoạn code  em đang cố ý viết sai: Nếu muốn đúng các bác thay biến i thành j cho em ở đoạn này:

   If Emin < E0 And E0 < Emax Then
            i = 2
            Do While Bang_Tra.Cells(i, 1).Value < E0
               i = i + 1
            Loop
   End If

 

Tra Teta - Test.rar

 

TraTeta.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Giả sử em muốn kiểm tra giá trị biến i, j, Vmax, Vmin.... là bao nhiêu, khi chạy tại ô này. Thì em phải làm thế nào ạ.

 

Trả lời cho câu này nhé:

Vào trong code, tới dòng nào muoosn kiểm tra nhấ con chuột tại đó rồi bấm F9(BreakPoint) sau đó vào ô D1 (Double Click vào D1) rồi Enter phát, code sẽ dừng lại tại điểm bạn muốn xem

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
12 phút trước, dinhvantrang đã nói:

Trả lời cho câu này nhé:...

Vào trong code, tới dòng nào muoosn kiểm tra nhấ con chuột tại đó rồi bấm F9(BreakPoint) sau đó vào ô D1 (Double Click vào D1) rồi Enter phát, code sẽ dừng lại tại điểm bạn muốn xem

Cám ơn bác nhé. :))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Biến j chưa tính nên có giá trị default=0 gây lỗi

Nếu sửa

   If Emin < E0 And E0 < Emax Then
            j = 2
            Do While Bang_Tra.Cells(j, 1).Value < E0
               j = j + 1
            Loop
   End If

(đổi i => j)

thì ra kết quả nhưng không biết đúng ý đồ không?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Trong Code window: Move mouse vào biến

Trong Local window: Liệt kê các biến của hàm

Trong Watches window: các biến cần theo dõi

VD biến R = 32

Var.thumb.png.c6e520201387de07d612a3e2756a3983.png

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×