Cách sử dụng MsgBox để kiểm tra các dòng lệnh trong VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

a.nguoidensau

Thành viên hoạt động
Tham gia
12/4/12
Bài viết
138
Được thích
28
Xin chào các thành viên của diễn đàn GPE.

Tôi đang tìm hiểu về VBA, nên có rất nhiều điều muốn được học hỏi từ các thành viên.
Chẳng hạn như việc sử dụng MsgBox để kiểm tra các dòng lệnh trong lập trình VBA.
Ai đó có thể giúp tôi hiểu được phần nào về vấn đề này.
Tôi xin cảm ơn trước.
 
...
Tổng thể phương pháp debug là:
1. In ra màn hình Immediate
+ Mở cửa sổ Immediate - CTRL+G
+ Dùng đối tượng Debug để hiển thị giá trị của biến hoặc biểu thức:
Debug.Print TenBienHoacBieuThuc
2. BreakPoint - Tạm ngưng dòng lệnh để kiểm tra
+ Đặt điểm ngưng, để con trỏ tại dòng muốn ngưng, nhấn F9 hoặc vào menu Insert->Toggle BreakPoint
+ Mở cửa sổ Local Windows (Menu View->Local Windows). Cửa sổ này cho phép bạn xem tổng thể các biến và đối tượng đang hoạt động, có thể xem giá trị của nó hoặc các Property của đối tượng.
+ Nếu cần dùng cửa sổ Immadiate (CTRL+G) để kiểm tra giá trị bằng cách:
?TenBienHoacBieuThuc
Với lệnh trên bạn sẽ nhận được giá trị của biến hoặc biểu thức ra cửa sổ Immediate.

Thêm một chút (mục 3?)
3. Đói với người có khả năng debug ở trình độ cao, cửa sổ này còn là một cơ hội để chỉnh sửa code và môi trường.
Ví dụ code bạn đang chạy với activesheet là sheet1, bạn 'break' nó, vào cửa sổ Immediate gõ lệnh
sheet2.activate
Luc tiếp tục chạy, code của bạn sẽ thao tác với activesheet là sheet2
 
Upvote 0
"cao siêu" thì không dám nhận. Ở đây là nơi học tập, tôi chỉ đưa ra các quan điểm khác cho các bạn mới học tham khảo.

Một trong những trường hợp điển hình, MsgBox có thể được dùng để xét qua thông số trước khi quyết định tiếp tục chạy code hay ngưng không chạy nữa. Trường hợp này, nó không hẳn là để kiểm chứng code, mà phải gọi là kiểm chứng môi trường thì đúng hơn.

Code sau đây là ví dụ:
Mã:
Sub t()
For i = 1 To 10
If MsgBox("chon ok de tiep tuc, hoac cancel de thoat", vbOKCancel, "luot thu " & i) = vbCancel Then Exit For
Next
MsgBox "ngung o luot thu " & i, , "tong ket"
End Sub
Code này cũng đâu Có gì đặc biệt đâu ... ngoài việc kiểm tra cái biến i nó chạy mấy lần thôi...
Như mình đã nói liên quan đến thớt này Msgbox thì chỉ ứng dụng trong Tốt việc kiểm tra biến của code thôi mà VD: Dim i ... thì Msgbox i Vậy thôi
Đơn giản và dễ chơi nhất quả đất....nhưng chủ thớt cứ nghĩ nó là cái quái gì cao siêu lắm

Còn những gì không liên quan đến tiêu đề thớt này qua link sau Ta bàn tiếp nè
http://www.giaiphapexcel.com/forum/showthread.php?109073-Ứng-dụng-Immediate-trong-VBA
 
Lần chỉnh sửa cuối:
Upvote 0
Code này cũng đâu Có gì đặc biệt đâu ... ngoài việc kiểm tra cái biến i nó chạy mấy lần thôi...
Như mình đã nói liên quan đến thớt này Msgbox thì chỉ ứng dụng trong Tốt việc kiểm tra biến của code thôi mà VD: Dim i ... thì Msgbox i Vậy thôi
Đơn giản và dễ chơi nhất quả đất....nhưng chủ thớt cứ nghĩ nó là cái quái gì cao siêu lắm

Tôi đưa ra điển hình trường hợp MsgBox cho phép người dùng chọn lựa rẽ nhánh khác. Nó rất thông thường - cái quan trọng là "thông thường", nếu "đặc biệt" hay "cao siêu" thì còn nói làm quái gì nữa.
 
Upvote 0
Để học lập trình, kiểm tra giá trị các biến, tìm lỗi trong quá trình chạy code ít ai lại dùng MsgBox để hiển thị cả. Bạn cần học cách kỹ thuật DEBUG. Ai đó nói nhờ MsgBox mà đã giỏi VBA thì nếu biết Debug thì sẽ là quá giỏi luôn %#^#$. MsgBox dùng chuyên để tương tác của End User - Người dùng cuối để nhận thông báo hoặc quyết định cách thức chạy lệnh (như các nút bấm Yes/No).

Kỹ thuật Debug. Cách đây 7 năm tồi đã quay video kỹ thuật debug trong Excel và VB6 tại bài viết dưới đây bạn có thể học.
http://www.giaiphapexcel.com/forum/...p-trình-VB6-DLL-cho-Excel-Debugging-cho-Excel

Tổng thể phương pháp debug là:
1. In ra màn hình Immediate
+ Mở cửa sổ Immediate - CTRL+G
+ Dùng đối tượng Debug để hiển thị giá trị của biến hoặc biểu thức:
Debug.Print TenBienHoacBieuThuc
2. BreakPoint - Tạm ngưng dòng lệnh để kiểm tra
+ Đặt điểm ngưng, để con trỏ tại dòng muốn ngưng, nhấn F9 hoặc vào menu Insert->Toggle BreakPoint
+ Mở cửa sổ Local Windows (Menu View->Local Windows). Cửa sổ này cho phép bạn xem tổng thể các biến và đối tượng đang hoạt động, có thể xem giá trị của nó hoặc các Property của đối tượng.
+ Nếu cần dùng cửa sổ Immadiate (CTRL+G) để kiểm tra giá trị bằng cách:
?TenBienHoacBieuThuc
Với lệnh trên bạn sẽ nhận được giá trị của biến hoặc biểu thức ra cửa sổ Immediate.

Cảm ơn anh Nguyễn Duy Tuân với những điều chia sẻ ở trên, tôi sẽ tìm hiểu và đi theo hướng này.
Một lần nữa xin được cảm ơn anh.
 
Upvote 0
Nếu có ai đó nói dùng kỹ thuật nọ kỹ thuật kia từ ngữ chuyên nghành nghe chừng ghê gớm lắm....Nhưng
Thật ra không làm chủ được code nên mới nhờ đến sự trợ giúp của Bác Bill xem đúng hay sai.......--=0

cho dù ai đó có phủ nhận thì lời mình nói đó là sự thật

Tôi thì mới biết viết code mà cũng không cần quan tâm tới mấy cái kỹ thuật quái quỹ đó mà cũng viết phà phà....Xong...
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu có ai đó nói dùng kỹ thuật nọ kỹ thuật kia từ ngữ chuyên nghành nghe chừng ghê gớm lắm....Nhưng
Thật ra không làm chủ được code nên mới nhờ đến sự trợ giúp của Bác Bill xem đúng hay sai.......--=0

Tôi thì mới biết viết code mà cũng không cần quan tâm tới mấy cái kỹ thuật quái quỹ đó mà cũng viết phà phà....Xong...

Bạn viết cho bạn xài thôi, đúng không?

& cũng nên xem người khác người ta làm sao chứ nhỉ?

Bạn cần bình tĩnh hơn, vì bạn không là chủ của topic này!
 
Upvote 0
Tôi thì mới biết viết code mà cũng không cần quan tâm tới mấy cái kỹ thuật quái quỹ đó mà cũng viết phà phà....Xong...

với chương trình nho nhỏ thì OK. chứ với với chương trình lớn thì ngay tên hàm, tên biến cũng chẳng nhớ nổi. nhất là khi sử dụng nhiều event, cái này kéo cái kia, không debug thì làm sao kiểm soát được.
ngoài các cách đã nêu, trong các sub/function tui luôn thêm một biến để kiểm soát Caller. khi có lỗi mới biết cái nào gọi tới.
 
Upvote 0
Nếu có ai đó nói dùng kỹ thuật nọ kỹ thuật kia từ ngữ chuyên nghành nghe chừng ghê gớm lắm....Nhưng
Thật ra không làm chủ được code nên mới nhờ đến sự trợ giúp của Bác Bill xem đúng hay sai.......--=0

cho dù ai đó có phủ nhận thì lời mình nói đó là sự thật

Tôi thì mới biết viết code mà cũng không cần quan tâm tới mấy cái kỹ thuật quái quỹ đó mà cũng viết phà phà....Xong...

Lệch lạc hết! Ở đây tôi chỉ giúp chủ thớt chứ không cần khoe tài.

Sự thật là như thế này:
Ở bài #3 tôi đã cẩn thận hỏi lại chủ thớt là muốn biết về lý thuyết hay thực hành.
Tôi cũng cẩn thận giới thiệu chủ thớt rằng diễn đàn này có nhiều trường phái. Và tôi không hề phê phán trường phải viết code nhanh, chạy lẹ chỗ nào cả.

Như vậy không thể kết tội tôi bênh vực trường phái của riêng mình.
 
Upvote 0
Để học lập trình, kiểm tra giá trị các biến, tìm lỗi trong quá trình chạy code ít ai lại dùng MsgBox để hiển thị cả. Bạn cần học cách kỹ thuật DEBUG. Ai đó nói nhờ MsgBox mà đã giỏi VBA thì nếu biết Debug thì sẽ là quá giỏi luôn %#^#$. MsgBox dùng chuyên để tương tác của End User - Người dùng cuối để nhận thông báo hoặc quyết định cách thức chạy lệnh (như các nút bấm Yes/No).

Kỹ thuật Debug. Cách đây 7 năm tồi đã quay video kỹ thuật debug trong Excel và VB6 tại bài viết dưới đây bạn có thể học.
http://www.giaiphapexcel.com/forum/...p-trình-VB6-DLL-cho-Excel-Debugging-cho-Excel

Tổng thể phương pháp debug là:
1. In ra màn hình Immediate
+ Mở cửa sổ Immediate - CTRL+G
+ Dùng đối tượng Debug để hiển thị giá trị của biến hoặc biểu thức:
Debug.Print TenBienHoacBieuThuc
2. BreakPoint - Tạm ngưng dòng lệnh để kiểm tra
+ Đặt điểm ngưng, để con trỏ tại dòng muốn ngưng, nhấn F9 hoặc vào menu Insert->Toggle BreakPoint
+ Mở cửa sổ Local Windows (Menu View->Local Windows). Cửa sổ này cho phép bạn xem tổng thể các biến và đối tượng đang hoạt động, có thể xem giá trị của nó hoặc các Property của đối tượng.
+ Nếu cần dùng cửa sổ Immadiate (CTRL+G) để kiểm tra giá trị bằng cách:
?TenBienHoacBieuThuc
Với lệnh trên bạn sẽ nhận được giá trị của biến hoặc biểu thức ra cửa sổ Immediate.

kyo chỉ muốn bổ sung thêm về kỹ thuật Debug thì có rất nhiều, có thể kể đến:
1/ Các phương thức Debug.Print, Assert.
2/ MsgBox.
3/ Công cụ Step mà điển hình là Step Into (F8).
4/ Immediate Window.
5/ Locals Window.
6/ Call Stack.
7/ Watch Window.
8/ Break Point.

Và dĩ nhiên là để hiệu quả thì nên xài kết hợp nhiều công cụ với nhau, nên hiểu rõ từng công cụ để có cách sử dụng hợp lý.

Cá nhân kyo thì thích sử dụng F8, Break Point và Immediate Window.
 
Upvote 0
Mình cũng thích sử dụng cửa sổ watch. Watch có 2 dạng:
- Watch expression dùng kết hợp với step (F8) để quan sát giá trị 1 biểu thức, tương tự Local hay Immediate window kết hợp với step;
- Break when value is true và break when value changes: dừng chương trình khi biểu thức <>0 hoặc khi giá trị biểu thức thay đổi. Loại này mình thích dùng hơn.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom