Code VBA theo yêu cầu

Euler

Administrator
Thành viên BQT
Hiện nay tuhocvba.net là một địa chỉ uy tín code theo yêu cầu.

Diễn đàn THVBA đi theo hướng học thuật, chia sẻ tri thức. Trong quá trình phát triển, đã tiếp nhận những yêu cầu code, rồi từ đó "Code VBA theo yêu cầu" trở thành một hướng đi mới, đáp ứng mong mỏi của những người có nhu cầu cần hỗ trợ code nhưng lại thiếu khả năng code cũng như thời gian nghiền ngẫm các bài học VBA.
Giờ đây nói tới Code VBA theo yêu cầu-người ta nghĩ tới THVBA.
Nếu như những người sống bằng Excel sẽ làm ra các sản phẩm mà họ tâm đắc, rồi đăng bán cho những người cần, tức là một sản phẩm bán cho hàng chục hay hàng trăm hay hàng ngàn người (1), thì THVBA lại làm một việc "dại dột", đó là chỉ code cho 1 người.

Code VBA theo yêu cầu, tức là tiếp nhận yêu cầu của một người, và code theo yêu cầu đó. Tư vấn các lựa chọn hợp lý, rồi đưa ra sản phẩm hoàn thiện cho người có yêu cầu.
Code VBA theo yêu cầu khác với sản phẩm (1) mà tôi nói ở trên.
Với sản phẩm đã nói ở (1), mặc dù sản phẩm được bán ra, người ta bỏ tiền ra mua nhưng lại không được xem code, không hiểu logic của code. Họ chỉ được sử dụng file được cung cấp.

Tuy nhiên, code VBA theo yêu cầu, người yêu cầu sẽ nhận toàn bộ code, toàn bộ logic code sẽ được thuyết minh, làm rõ logic, thuận lợi cho bất cứ ai tiếp nhận sản phẩm có thể tự cập nhật hay sửa chữa sau này.

Sản phẩm do THVBA làm ra chứa đựng triết lý "dễ hiểu" ở trong đó. Code do THVBA làm ra thực sự là nguồn tham khảo quý giá cho những người muốn học thiết kế lập trình VBA. Tuy nhiên do đây là sản phẩm sở hữu của người yêu cầu, cho nên code không được công khai, chỉ những người tham gia dự án code mới được xem code. Các đoạn chương trình thường được chia sẻ tản mạn trên diễn đàn bằng các bài viết nhỏ, hoặc các bài tổng kết khi hoàn thành dự án.

Trong tương lai, hi vọng diễn đàn có thể tổng kết các kinh nghiệm code VBA theo yêu cầu để viết nên một tài liệu "Học thiết kế chương trình VBA" cho các bạn trẻ.
 

PTHhn

Yêu THVBA như điếu đổ
Thì cũng như hàng hiệu và hàng công nghiệp sản xuất hàng loạt, bạn à. Hàng công nghiệp sản xuất hàng loạt thì giá rẻ, cho nhiều người dùng.
Hàng hiệu thường sản xuất số lượng hạn chế, do các nghệ nhân có tay nghề cao, làm tỉ mỉ, mất thời gian trau chuốt.
Hàng hiệu và hàng công nghiệp không cạnh tranh nhau vì thị hiếu người dùng khác nhau.

Người dùng hàng hiệu phải có khả năng kinh tế. Hoặc đó là thứ họ rất cần, nhưng người khác không cần, người dùng không có khả năng tự làm. Vì vậy người dùng sẽ đặt hàng-thửa riêng theo yêu cầu.

Tham khảo các Tool do các bạn công khai, làm giúp miễn phí, tôi đã thấy rất chuyên nghiệp. Nếu đặt hàng làm riêng có trả công, có thể các bạn còn làm tốt hơn nữa.
Chúc diễn đàn phát triển.
 
N

Nguyễn trung hiếu

Guest
Chúc diễn đàn phát triển hơn nữa. vài bữa nữa mình xin nhờ diễn đàn code theo yêu cầu hihi ( mới biết về VBA nên mong được hướng dẫn nhiều ;)) )
 

tuhocvba

Administrator
Thành viên BQT
Thường thì các trợ giúp code trên diễn đàn dữ liệu input có rất ít, chưa thể nói là dự án, thế nhưng các bạn trình bày đã không tốt. Nếu làm dự án, cứ cho bạn là người bỏ tiền và thuê code, nhưng diễn giải không tốt thì cũng rất phiền hà, không ai dám làm việc với bạn ở lần sau.

Dưới đây là các vấn đề thường gặp:

1. File demo không mô phỏng đúng quy mô dự án.
Ta ví dụ, dữ liệu thực tế là 10.000 dòng nhưng demo chỉ cung cấp 100 dòng. Từ đó dẫn tới không hình dung đúng quy mô, dẫn tới giải pháp cũng không triệt để.
Hoặc quy mô chỉ cỡ 2000 dòng, nhưng khi chạy test thì chạy tới 20.000 dòng giả lập.

Tôi lấy ngay ở dự án . Trong đoạn code phải xử lý sắp xếp mảng. Nếu xử dụng thuật toán nổi bọt thông thường mà chạy lên 20.000 dòng giả lập thì tốc độ có khi mất hàng tiếng.
Ngay lập tức chúng tôi nhận phản hồi là chương trình chạy rất chậm. Tôi thảo luận lại với bên yêu cầu, xem chính xác là quy mô xử lý này cỡ bao nhiêu. Từ công việc thực tế, phần data này nếu sắp xếp chỉ khoảng 2000 dòng.
Nếu ta chạy hai vòng lặp for, như vậy số xử lý là 2000x2000 = 4 triệu.
Giả xử một xử lý cỡ 10ms, chạy 4 triệu lần, đó cũng là một khoảng thời gian lớn.

Khi không hình dung rõ quy mô dự án, giải pháp đưa ra cũng hời hợt, miễn sao đưa ra output đúng. Khi hiểu rõ quy mô dự án, hiểu được vấn đề lúc này là gì, khi đó mọi người sẽ suy nghĩ để giải quyết vấn đề làm sao cho tốt nhất. Tôi nhớ lúc ấy đã dùng Rank để sắp xếp.
 

Euler

Administrator
Thành viên BQT
2. Thông tin bất nhất
Khi thông tin thuyết minh bất nhất, có thể dẫn tới output sai. Bạn sẽ phải code lại. Lúc này dù là công việc được trả công, bạn cũng cảm thấy mất động lực làm việc khi phải làm lại thứ mình đã làm.
Chưa kể lâm vào hoàn cảnh bị áp lực thời gian. Chẳng hạn người yêu cầu muốn giao hàng vào ngày 17/5/2020 nhưng vì hai bên giao tiếp không tốt dẫn tới hiểu sai, vì vậy phải code lại, và vì thế mà giao hàng không đúng hẹn.
Tất nhiên bạn và người yêu cầu có thể tranh luận, lỗi đâu phải do tôi. Do anh trình bày không tốt, thông tin đưa loạn xị ngậu thì tôi làm sao?
Dự án số 01 mất hơn 70h phát sinh sửa chữa và cập nhật, đó là câu chuyện đã xa.

Hiện tại với dự án số 03 chưa công bố trên diễn đàn, admin tuhocvba là người xác nhận thông tin input. Dưới đây là ảnh do anh cung cấp.
Bạn cần đăng nhập để thấy hình ảnh


Điểm may mắn là người được giao việc là người làm việc chuyên nghiệp, nên đã ngay lập tức xác nhận với người yêu cầu. Vì có điểm bất nhất nên đã sớm phát hiện ra sai sót.
Nếu thông tin cột dữ liệu sai, tức là các xử lý trên mảng sẽ sai. Cái sai này sẽ kéo theo cái sai khác. Việc sửa chữa sẽ mất rất nhiều thời gian.

Dự án số 03 dự kiến input là 5 files. Số lượng input như vậy là nhiều, nếu so với các bài toán các bạn mang lên diễn đàn thì bài toán của các bạn rất nhỏ. Với bài toán nhỏ thì lại càng phải nghiêm khắc, chỉn chu để các bạn không mất đi nền tảng. Nhưng cái các bạn muốn lại giống như thứ mỳ ăn liền, bỏ qua nguyên tắc làm việc, chỉ cốt làm sao đạt mục đích trước mắt. Thật là thiển cận.

Bây giờ thì các bạn đã hiểu, những phát ngôn như là, tại sao BQT không công khai thu tiền và trợ giúp để bớt đi thái độ gay gắt khi thành viên trình bày không tốt. Có đúng là khi bỏ tiền ra thì bạn có thể trình bày tùy tiện. Thay vì học cách làm việc chuyên nghiệp, phát ngôn như thế chẳng khác nào coi đồng tiền là trên hết. Mà các bạn thì đã có nhiều tiền chưa?

Như vậy, các bạn đã hiểu, trên diễn đàn đang tái hiện những công việc mà chúng tôi đã làm. Thay vì học hỏi lấy đó làm kinh nghiệm cho bản thân, thì nhiều người trách móc rằng BQT vô cảm, rằng BQT lạnh lùng. Các bạn đã hiểu, vì sao người hỗ trợ code mà không xác nhận rõ input, cứ tự ý code thì không được diễn đàn công nhận tài năng, và có thể bị xóa nick.
Các bạn đã hiểu vì sao phát ngôn của buiquangthuan đã dẫn tới bạn ấy bị ban nick và xóa nick.
-Code không cần comment.
-Người ta cần hỗ trợ nhanh.
-Người ta có khả năng code thì để cho người ta code.

Các bạn đã hiểu, khi trên diễn đàn có thông tin bất nhất, thành viên lập tức bị nhắc nhở. Thay vì tiếp thu ý kiến và rút kinh nghiệm, thì lại tự ái xin ban nick (xóa nick). Rồi phát ngôn diễn đàn làm như vậy sẽ mất khách. Khách ở đây là ai? Là những người không có khả năng code cũng như không biết cách làm việc chuyên nghiệp, và là những người không biết tiếp thu ý kiến, chỉ biết chăm chút cho bộ lông sỹ diện của mình khi bị nhắc nhở thôi à?
 

giaiphapvba

Administrator
Thành viên BQT
3. Không rõ ràng logic, trong đó chủ yếu là điều kiện thực thi phép gán.
Ta hãy xem trường hợp yêu cầu như sau:
Bạn cần đăng nhập để thấy hình ảnh


Khi làm việc nhiều sheet dữ liệu hay nhiều file dữ liệu liên quan tới nhau, phải có điều kiện logic để tham chiếu tới dữ liệu.
Tôi ví dụ:
Bạn cần đăng nhập để thấy hình ảnh

Để làm việc với hai vùng dữ liệu liên quan DATA XDATA Y, có thể là dựa vào từ khóa Mã KH. Hoặc người ta có thể kết hợp dữ liệu của hai cột dữ liệu làm từ khóa, chẳng hạn keyword = Mã KH & X1.
Tóm lại để làm việc với hai vùng dữ liệu thì phải có từ khóa, vì vậy cần phải làm rõ từ khóa này là gì. Nó có duy nhất hay không, nếu không duy nhất thì xử lý tiếp theo nên là gì? Những điều đó phải làm rõ và phải được thảo luận với người yêu cầu.
Về điểm này, thường thì người yêu cầu code sẽ không nêu ra vì họ không có kinh nghiệm. Người code sẽ là người đặt ra câu hỏi.
Nhưng người yêu cầu code lại nắm rõ đặc điểm data, do đó anh chị khách hàng sẽ nhanh chóng trả lời được là từ khóa như vậy là duy nhất, hoặc không duy nhất thì cũng không sao đâu-hãy xử lý như thế này cho tôi...

Code theo yêu cầu khác với code theo thế mạnh rồi rao bán sản phẩm. Vì code theo yêu cầu là hoàn toàn bị động, không có chuyên môn công việc của người ta, vì vậy bước làm rõ yêu cầu thường tốn thời gian nhất. Từ kinh nghiệm cho thấy, nếu code mất 200h thì có khi mất tới 100h làm rõ yêu cầu, và 70h thiết kế và thống nhất thiết kế này với người yêu cầu, thời gian code có khi chỉ mất 30h mà thôi.
 

tuhocvba

Administrator
Thành viên BQT
4. Nên giữ một khoản tiền cọc trước khi dự án bắt đầu
Thực tế đã có những dự án dù đã đưa ra được sản phẩm mà không nhận được tiền hoặc không buồn nhận tiền nữa, do thái độ của khách hàng như bố đời mẹ thiên hạ.
Hoặc mất thời gian tìm hiểu giải pháp, sau đó khách hàng lặn luôn.
Vì vậy, để tránh những thiệt hại như thế này, bên code nên giữ một khoản tiền cọc trước khi tìm hiểu dự án khả thi hay không. Việc giữ một khoản tiền cọc chính là để đánh giá chính xác thái độ nghiêm túc của khách hàng với dự án này.
Đôi khi khách hàng chỉ là hứng khởi, sướng lên thì nghĩ ra, đến khi thực hiện đương nhiên sẽ làm tốn thời gian của người khác cho nên phải trả công, ngẫm tới tiền thì lại chột dạ lại, thôi cái này không làm cũng không sao, thế là quay đít chạy đi mất!
 
Top