Làm sao để lập trình VBA tốt?

Liên hệ QC

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia
13/6/06
Bài viết
7,120
Được thích
24,279
Là người viết sách Excel, Excel ứng dụng và lập trình VBA trong Excel nên tôi gặp nhiều ý kiến, câu hỏi từ bạn đọc. Nhiều bạn tưởng cứ mua sách xong là trở thành chuyên gia, nhà lập trình mà không có định hướng nghiên cứu, học hỏi... Qua đây tôi cập nhật những vấn đề chung mà nhiều bạn quan tâm:

1️⃣
VBA là gì?

Đó là lập trình Visual Basic được tích hợp trong các ứng dụng (Applications) do Microsoft phát triển. Cấu trúc ngôn ngữ rất giống Visual Basic cổ điển. VBA là ngôn ngữ đơn giản, dễ hiểu mang tính thực dụng. Người dùng thành thạo với 1 ứng dụng thì dễ dàng áp dụng ở ứng dụng khác, hay phát triển lên môi trường lập trình cao hơn như VB6, VB.NET...
VBA giúp tự động hóa hầu hết các tác vụ trong các ứng dụng và cả môi trường bên ngoài (trong Window) với hiệu quả như các phần mềm chuyên nghiệp. Ví dụ như có thể xuất nhập dữ liệu giữa Excel, Word, Access, PowerPoint, AutoCAD...


2️⃣
- Kiến thức cần và đủ để học VBA?

Bạn cần có kiến thức tối thiểu ở mức cơ bản của ứng dụng (Excel, AutoCAD...). Bởi vì lập trình cũng chỉ là thao tác với đối tượng bằng mã lệnh thay vì thực hiện thủ công.
Nắm bắt, hiểu rõ được mô hình quản lý, điều khiển đối tượng của ứng dụng. Ví dụ để điều khiển font trong ô thì cần bước truy cập: tập tin > sheet > ô > font...
Nên nhớ kiến thức trong ứng dụng càng tốt thì sử dụng VBA càng hiệu quả, vì người dùng có thể kết hợp, lồng ghép chúng với nhau. Ví dụ như có thể kết hợp Name, Name động, Data Validation, Filter, Pivot Table... với VBA để có các tình huống không ngờ hay vậy!
1f642.png

Nhiều người loay hoay lập hàm hay thủ tục để giải bài toán nào đó, nhưng không biết rằng Excel đã có các hàm hay công cụ giải quyết...
Những người có kiến thức Excel tốt thì họ sẽ biết vai trò của VBA trong công tác xây dựng bảng tính.


3️⃣
- Học VBA để làm gì?

VBA thường được sử dụng để tự động hóa các tác vụ trong Excel (hay môi trường ứng dụng khác). Nếu thực hiện thủ công thường mất nhiều công sức, hoặc dễ gặp sai sót... Điều đó dễ hiểu vì Excel là bảng tính mạnh mẽ
1f3cb.png
1f3cb.png
1f3cb.png
nhưng do áp dụng cho nhiều lĩnh vực nên không thể tập trung xử lý riêng biệt 1 chuyên môn nào đó! Do đó người dùng thành thạo Excel + VBA thì sẽ giải quyết được các bài toán chuyên môn một cách linh hoạt mà không 1 phần mềm chuyên nghiệp nào có thể làm nổi
1f60a.png



4️⃣
- Học VBA có khó không?!

✅
Vừa khó, vừa dễ!!!
1f60a.png

Khó khi người dùng chưa thành thạo ứng dụng, thậm chí 1 số khái niệm còn mơ hồ. Cần nhớ tiếng Anh được sử dụng trong ngôn ngữ lập trình nên chúng ta phải hiểu Activesheet, Range, Cell... là gì thì mới lập trình điều khiển chúng.

✅
Tư duy lập trình & thuật toán là mấu chốt!

Có người chả cần học, mà chỉ mày mò nghiên cứu mà tạo được sản phẩm được người dùng đánh giá cao! Trong khi đó nhiều người học CNTT ra vẫn không làm được sản phẩm gì hữu ích.
Kiến thức Toán học không tốt thì khó có thể lập trình giỏi! Thế hệ trẻ được đào tạo kiến thức Toán - Tin, thuật toán - đó là nền tảng cho lập trình bất cứ trong môi trường gì.

✅
Đam mê, chịu khó học hỏi là chìa khóa thành công!

Nhiều bạn mua sách hay bỏ tiền đi học VBA, tuy vậy không hẳn học xong là biết lập trình và có sản phẩm ứng dụng. Cần chịu khó trau dồi kiến thức, mày mò viết code, tư duy thuật toán... để giải quyết từng module nhỏ. Sau đó ghép lại để giải quyết vấn đề lớn hơn. Đọc 1 lần không hiểu thì hãy đọc lại vài lần, nếu vẫn không hiểu thì chịu khó vào các trang mạng như GPE để hỏi.

✅
Không có Thầy cô nào, sách vở nào có thể giúp các bạn thành công nếu mình không quyết tâm. Các kiến thức trong sách mang tính hệ thống, cơ bản để bạn đọc nắm bắt, nhanh chóng tiếp cận. Còn để phát triển hơn nữa thì cần vào các diễn đàn chuyên sâu, đọc Help của Microsoft + Google...
Bài đã được tự động gộp:



5️⃣
- Tiếp cận với VBA khi chưa biết gì bằng chức năng "Record Macro":


Nội dung này đã được đề cập ở phần đầu, hướng dẫn chi tiết. Mình gõ gì ở bàn phím thì VBA thu lại, biến thành mã lệnh. Sau đó tha hồ nghiên cứu.
Nhiều bạn đòi đốt cháy giai đoạn, cứ đòi làm được ngay khi nền tảng chưa có gì, mọi thứ đều hiểu mơ hồ.

6️⃣
Sách hướng dẫn lập trình chứ không phải hướng dẫn chuyên môn

Nhiều bạn đòi hỏi sách có nhiều ví dụ, bài tập liên quan đến chuyên môn. Điều này là không thể! Sách chỉ đề cập ở mức độ chung nào đó cho phù hợp. Trong khi đó rất nhiều ngành nghề sử dụng đến Excel, biết nội dung nào cần để đưa vào? Nếu đáp ứng được chắc phải mời nhiều chuyên gia của nhiều ngành cùng hỗ trợ :)

7️⃣
- Đôi điều về sách lập trình VBA:


Các bạn thấy là sách tiếng Anh rất nhiều, nhưng tiếng Việt lại rất ít, hoặc chỉ giới thiệu 1 cách sơ lược. Rào cản ngoại ngữ ảnh hưởng tới nhiều bạn muốn tìm hiểu. Tôi đọc nhiều sách tiếng Anh nhưng phải nói rõ rằng, có sách hay sách dở!!! Không phải cứ sách Tây là hay.
Việc chuyển đổi sang tiếng Việt ban đầu là hết sức vất vả khi phải chọn sách nào phù hợp, cố gắng phát huy ưu điểm của từng cuốn để đưa vào nội dung.
Sau khi cuốn đầu phát hành vào những năm 2005, 2006 thì Tác giả cũng đã chỉnh sửa, cập nhật nội dung, và cố gắng Việt hóa (hạn chế dịch) một cách phù hợp...

Và cuốn VBA cho người chưa biết gì có lẽ hay nhất là "Introduction to using macros in Microsoft Excel 2003" của Đại học Durham. Rất tường tận, chi tiết. Đây cũng là nội dung phần ban đầu của sách, và đã cập nhật, hiệu chỉnh cho phù hợp. Nói thật là ai đọc không hiểu nội dung cuốn sách đó thì tốt nhất là không nên học VBA!
 
Lần chỉnh sửa cuối:
...Và cuốn VBA cho người chưa biết gì có lẽ hay nhất là "Introduction to using macros in Microsoft Excel 2003" của Đại học Durham. Rất tường tận, chi tiết. Đây cũng là nội dung phần ban đầu của sách, và đã cập nhật, hiệu chỉnh cho phù hợp. Nói thật là ai đọc không hiểu nội dung cuốn sách đó thì tốt nhất là không nên học VBA!
Theo tôi thì một trong những quyển chỉ dẫn tường tận về ứng dụng là:
VBA for Modelers: Developing Decision Support Systems with Microsoft Office Excel
tác giả: Chris Albright

Lời nhà xuất bản giới thiệu sách:
VBA FOR MODELERS, 4TH EDITION của Chris Albright là một công cụ cần thiết giúp bạn học cách sử dụng Visual Basic for Applications (VBA) như một phương tiện để tự động hóa các tác vụ bảng tính thông thường, cũng như để tạo các ứng dụng khoa học quản lý cao cấp và phức tạp (sophisticated management science applications). VBA là ngôn ngữ lập trình cho Microsoft® Office. VBA FOR MODELERS bao gồm hai phần. Phần đầu tiên hướng dẫn các kiến thức cơ bản về VBA cho Excel. Phần thứ hai minh họa cách thức dùng VBA để tự động hoá một số mô hình khoa học quản lý. Từ quan điểm của người dùng, các ứng dụng này ẩn các chi tiết của các kỹ thuật khoa học quản lý và thay vào đó một giao diện người dùng đơn giản để trình bày các đầu vào và đầu ra.

Cái câu cuối mà tôi tô đỏ nó hơi liên quan đến lkys thuyết lập trình ứng dụng một chút. Nguyên tắc của lập trình ứng dụng là che đi cái phức tạp của hệ thống vfa đưa ra cái đơn giản của giao diện.
Lưu ý từ "mô hình" (models) ở đây. Căn bản sách này xoay trên mô hình ứng dụng. Nếu bạn không muốn làm việc theo mô hình thì quyển sách này vô dụng, đừng hí thời gian với nó, tìm sách khác tốt hơn.
 
Upvote 0
Theo tôi thì một trong những quyển chỉ dẫn tường tận về ứng dụng là:
VBA for Modelers: Developing Decision Support Systems with Microsoft Office Excel
tác giả: Chris Albright

Lời nhà xuất bản giới thiệu sách:
VBA FOR MODELERS, 4TH EDITION của Chris Albright là một công cụ cần thiết giúp bạn học cách sử dụng Visual Basic for Applications (VBA) như một phương tiện để tự động hóa các tác vụ bảng tính thông thường, cũng như để tạo các ứng dụng khoa học quản lý cao cấp và phức tạp (sophisticated management science applications). VBA là ngôn ngữ lập trình cho Microsoft® Office. VBA FOR MODELERS bao gồm hai phần. Phần đầu tiên hướng dẫn các kiến thức cơ bản về VBA cho Excel. Phần thứ hai minh họa cách thức dùng VBA để tự động hoá một số mô hình khoa học quản lý. Từ quan điểm của người dùng, các ứng dụng này ẩn các chi tiết của các kỹ thuật khoa học quản lý và thay vào đó một giao diện người dùng đơn giản để trình bày các đầu vào và đầu ra.

Cái câu cuối mà tôi tô đỏ nó hơi liên quan đến lkys thuyết lập trình ứng dụng một chút. Nguyên tắc của lập trình ứng dụng là che đi cái phức tạp của hệ thống vfa đưa ra cái đơn giản của giao diện.
Lưu ý từ "mô hình" (models) ở đây. Căn bản sách này xoay trên mô hình ứng dụng. Nếu bạn không muốn làm việc theo mô hình thì quyển sách này vô dụng, đừng hí thời gian với nó, tìm sách khác tốt hơn.

Ebook kia mới chỉ hướng dẫn ban đầu, chứ không đầy đủ. Ý em là đọc thông và hiểu thì mới có thể tiếp tục với các cuốn sách khác (như bác giới thiệu). Chứ nhiều bạn mắc ngay từ đầu thì khó học thật.
 
Upvote 0
Theo ý kiến nhỏ của em, cần nắm và vận dụng được các công cụ sẵn có của Excel (Filter, Advanced Filter, Pivot table, Data Validation....) trước khi nghĩ đến VBA.
Nếu vận dụng nhuần nhuyễn các công cụ này, có khi chưa cần đến VBA đã có thể giải quyết rất nhiều bài toán hóc búa rồi
 
Upvote 0
Theo ý kiến nhỏ của em, cần nắm và vận dụng được các công cụ sẵn có của Excel (Filter, Advanced Filter, Pivot table, Data Validation....) trước khi nghĩ đến VBA.
Nếu vận dụng nhuần nhuyễn các công cụ này, có khi chưa cần đến VBA đã có thể giải quyết rất nhiều bài toán hóc búa rồi
Tôi nghĩ là bạn đang nằm mơ. Nếu mọi người cũng nghĩ như bạn thì diễn đàn này mất ít nhất là 90% số bài.
Ở diễn đàn này bao nhiêu năm mà ai lại chẳng biết chuyện "công thức chậm quá, mình muốn làm bằng VBA cho nhanh", "thay hàm xyz của Excel bằng VBA", "tự động gộp nghiều files đóng", "dữ liệu có hàng triệu dòng, công thức đơ luôn"...
Toàn là người ta nghĩ tới VBA và tìm cách để biện minh rằng mình cần VBA. Có ai nghĩ tới công cụ và tìm cách để biện minh rằng mình không cần VBA đâu?
Các cụm từ "tự động", và "bấm một phát" là câu tâm niệm của dân GPE.
 
Upvote 0
Theo ý kiến nhỏ của em, cần nắm và vận dụng được các công cụ sẵn có của Excel (Filter, Advanced Filter, Pivot table, Data Validation....) trước khi nghĩ đến VBA.
Nếu vận dụng nhuần nhuyễn các công cụ này, có khi chưa cần đến VBA đã có thể giải quyết rất nhiều bài toán hóc búa rồi
Ý em đúng 1 phần, vì mỗi người 1 nghề nên cách tiếp cận với Excel khác nhau. Không phải ai cũng làm việc với dữ liệu có cấu trúc kiểu csdl như em nói, và những cái cần thiết liên quan đến filter...
 
Upvote 0
Web KT
Back
Top Bottom