Thiết kế chương trình Excel VBA là bước quan trọng để từ đó xây dựng nên một chương trình quy mô lớn [IPO]
1. Làm rõ Input, quá trình xử lý, Output như thế nào?
Thiết kế là việc suy nghĩ và đi tới quyết định phải làm như thế nào để hiện thực hóa mong muốn, ý muốn.
Đối với các thủ tục chỉ vài chục hay hơn trăm dòng code, việc suy nghĩ làm cái gì, làm như thế nào để hiện thực hóa ý tưởng, có lẽ là chỉ diễn ra trong đầu.
Tuy nhiên với một chương trình vài trăm dòng code, sử dụng nhiều thủ tục bên trong, nếu chỉ là những suy nghĩ trong đầu, thì thật khó có thể hiện thực dự án. Nếu có làm thì sẽ xảy ra nhiều vấn đề phát sinh giữa chừng, hoặc code chồng chéo, không tận dụng hiệu quả tài nguyên hệ thống.
Trong hoàn cảnh đó, việc tổ chức một cách có hệ thống bằng IPO (INPUT→PROCESS→OUTPUT) có thể giúp chúng ta thiết kế một chương trình rõ ràng, hiện thực hóa ý tưởng một cách khả thi mà ít gặp những trở ngại phát sinh giữa chừng.
Check!
Làm rõ ý tưởng, đâu là thông tin đầu vào, form giao diện trông như thế nào,... bằng cách sử dụng các graph trực quan hoặc có khi chỉ là những ghi chú bằng chữ nhưng cụ thể. Các quá trình xử lý trung gian là gì, tính toán dữ liệu như thế nào, thể hiện kết quả ra sao... Càng làm rõ ý tưởng càng tốt.
Hầu hết các công việc của chúng ta đều được cấu thành từ ba yếu tố như hình minh họa sau đây:
2. Đối với Excel VBA, chúng ta có nhiều thuận lợi trong thiết kế.
Hầu hết công việc Excel VBA đều nhận Input là file excel hoặc sheet nào đó của file excel, đi qua quá trình xử lý, và output cũng là một file excel hoặc một sheet của file excel đã được xử lý dữ liệu.
Vì vậy, nếu so sánh với các chương trình làm việc trên máy tính, thì việc thiết kế một chương trình Excel VBA có nhiều thuận lợi hơn.
Vì vậy, để làm rõ xử lý, cần chú ý nêu rõ là chúng ta đang xử lý với file nào, sheet nào, với trường dữ liệu nào (cột dữ liệu)...
Mục đích là để tạo ra Output trông như thế nào.
Trên diễn đàn, hầu hết chúng ta chỉ tập trung nói về Process, tôi muốn xử lý như thế này. Trong khi đó, làm rõ Input là gì, Output trông như thế nào-đó cũng là một việc rất quan trọng. Nhưng một số bạn thậm chí còn chẳng đưa file input lên. Hoặc file input không đúng với thực tế sau này, dẫn tới việc code không bao quát hết các khả năng. Hoặc không làm rõ Output mình muốn như thế nào cũng là điều thường gặp trên diễn đàn.
3. Công việc thiết kế sẽ giúp việc code đạt hiệu suất cao nhất.
Công việc thiết kế thường mát 70% thời gian của toàn dự án. Đây cũng là giai đoạn chính, bởi người yêu cầu code gần như không thể đọc code, mà họ giao tiếp với người code thông qua bản thiết kế. Thiết kế của anh là đúng/không đúng với ý tưởng mong muốn của tôi-họ trả lời được ngay. Trong khi đó, đối với việc đọc code, hoặc thậm chí chạy thử chương trình rồi check lại kết quả, thường mất nhiều thời gian hơn.
Khi xong giai đoạn thiết kế, thì việc code diễn ra rất nhanh. Ví dụ, chúng tôi có thể phải mất cả tuần chỉ để họp hành làm rõ các thắc mắc về thiết kế. Nhưng khi thiết kế đã được hai bên thống nhất, thì việc code chỉ trong 1-2 ngày là xong.
Tuy nhiên, trong quá trình làm việc thực tế trên diễn đàn, tôi nhận thấy các bạn thường rất sốt ruột, muốn người code bắt tay vào ngay việc code. Muốn có ngay bản demo, tâm lý ấy thật khó hiểu.
1. Làm rõ Input, quá trình xử lý, Output như thế nào?
Thiết kế là việc suy nghĩ và đi tới quyết định phải làm như thế nào để hiện thực hóa mong muốn, ý muốn.
Đối với các thủ tục chỉ vài chục hay hơn trăm dòng code, việc suy nghĩ làm cái gì, làm như thế nào để hiện thực hóa ý tưởng, có lẽ là chỉ diễn ra trong đầu.
Tuy nhiên với một chương trình vài trăm dòng code, sử dụng nhiều thủ tục bên trong, nếu chỉ là những suy nghĩ trong đầu, thì thật khó có thể hiện thực dự án. Nếu có làm thì sẽ xảy ra nhiều vấn đề phát sinh giữa chừng, hoặc code chồng chéo, không tận dụng hiệu quả tài nguyên hệ thống.
Trong hoàn cảnh đó, việc tổ chức một cách có hệ thống bằng IPO (INPUT→PROCESS→OUTPUT) có thể giúp chúng ta thiết kế một chương trình rõ ràng, hiện thực hóa ý tưởng một cách khả thi mà ít gặp những trở ngại phát sinh giữa chừng.
Check!
INPUT:Dữ kiện đầu vào
PROCESS:Các bước xử lý
OUTPUT:Dữ liệu đầu ra mong muốn
Hãy vận dụng suy nghĩ này vào Excel, ta sẽ thấy rất hiệu quả đấy.Làm rõ ý tưởng, đâu là thông tin đầu vào, form giao diện trông như thế nào,... bằng cách sử dụng các graph trực quan hoặc có khi chỉ là những ghi chú bằng chữ nhưng cụ thể. Các quá trình xử lý trung gian là gì, tính toán dữ liệu như thế nào, thể hiện kết quả ra sao... Càng làm rõ ý tưởng càng tốt.
Hầu hết các công việc của chúng ta đều được cấu thành từ ba yếu tố như hình minh họa sau đây:
Bạn cần đăng nhập để thấy đính kèm
2. Đối với Excel VBA, chúng ta có nhiều thuận lợi trong thiết kế.
Hầu hết công việc Excel VBA đều nhận Input là file excel hoặc sheet nào đó của file excel, đi qua quá trình xử lý, và output cũng là một file excel hoặc một sheet của file excel đã được xử lý dữ liệu.
Vì vậy, nếu so sánh với các chương trình làm việc trên máy tính, thì việc thiết kế một chương trình Excel VBA có nhiều thuận lợi hơn.
Bạn cần đăng nhập để thấy đính kèm
Vì vậy, để làm rõ xử lý, cần chú ý nêu rõ là chúng ta đang xử lý với file nào, sheet nào, với trường dữ liệu nào (cột dữ liệu)...
Mục đích là để tạo ra Output trông như thế nào.
Trên diễn đàn, hầu hết chúng ta chỉ tập trung nói về Process, tôi muốn xử lý như thế này. Trong khi đó, làm rõ Input là gì, Output trông như thế nào-đó cũng là một việc rất quan trọng. Nhưng một số bạn thậm chí còn chẳng đưa file input lên. Hoặc file input không đúng với thực tế sau này, dẫn tới việc code không bao quát hết các khả năng. Hoặc không làm rõ Output mình muốn như thế nào cũng là điều thường gặp trên diễn đàn.
3. Công việc thiết kế sẽ giúp việc code đạt hiệu suất cao nhất.
Công việc thiết kế thường mát 70% thời gian của toàn dự án. Đây cũng là giai đoạn chính, bởi người yêu cầu code gần như không thể đọc code, mà họ giao tiếp với người code thông qua bản thiết kế. Thiết kế của anh là đúng/không đúng với ý tưởng mong muốn của tôi-họ trả lời được ngay. Trong khi đó, đối với việc đọc code, hoặc thậm chí chạy thử chương trình rồi check lại kết quả, thường mất nhiều thời gian hơn.
Khi xong giai đoạn thiết kế, thì việc code diễn ra rất nhanh. Ví dụ, chúng tôi có thể phải mất cả tuần chỉ để họp hành làm rõ các thắc mắc về thiết kế. Nhưng khi thiết kế đã được hai bên thống nhất, thì việc code chỉ trong 1-2 ngày là xong.
Tuy nhiên, trong quá trình làm việc thực tế trên diễn đàn, tôi nhận thấy các bạn thường rất sốt ruột, muốn người code bắt tay vào ngay việc code. Muốn có ngay bản demo, tâm lý ấy thật khó hiểu.