Link tải free bộ giáo trình VBA hay và dễ hiểu: Tại đây
# 1 - Alt + F11 để mở trình chỉnh sửa VB
VB Editor là ứng dụng chúng ta sử dụng để viết các macro và tạo các biểu mẫu người dùng. Nó có thể được mở bằng cách nhấn vào nút Visual Basic trên tab Developer trong Excel.
Phím tắt để mở Trình chỉnh sửa VB trong bất kỳ phiên bản Excel nào của Excel là Alt+ F11.
Phím tắt trong phiên bản Mac là Opt+ F11hoặc Fn+ Opt+ F11.
Nếu bạn không thấy tab Nhà phát triển trong ruy-băng, hãy nhấp vào hình ảnh để tìm hiểu cách bật tab:
Phím Fn (Chức năng) trên Máy tính xách tay
Nếu bạn đang sử dụng bàn phím máy tính xách tay thì bạn cũng có thể cần phải bấm và giữ Fnphím trước khi nhấn F11. Các phím chức năng trên máy tính xách tay thường là các phím đa dụng và yêu cầu phải Fnbấm phím để kích hoạt các phím chức năng ( F1- F12).
Một số máy tính xách tay có tính năng Khóa Fn làm cho các phím chức năng chính, có nghĩa là bạn sẽ không phải nhấn phím Fn khi nhấn F1-F12.
# 2 - Lưu trữ Macro của bạn trong Sổ làm việc Macro cá nhân
Workbook Macro cá nhân (PMW) là một nơi tuyệt vời để lưu trữ các macro bạn thường sử dụng. Sổ làm việc này mở trong nền sau mỗi lần chúng ta mở Excel, làm cho các macro của chúng ta có thể truy cập dễ dàng.
Chúng tôi cũng có thể tạo thanh công cụ tùy chỉnh bằng các nút để chạy các macro của chúng tôi. Tôi thích nghĩ về PMW như vành đai công cụ Excel của chúng tôi có thể giúp chúng tôi tiết kiệm thời gian với công việc chúng tôi làm mỗi ngày.
Ví dụ, tôi có một bài viết với một macro tạo ra một danh sách các giá trị duy nhất trên một trang tính mới. Chúng tôi có thể lưu trữ macro này trong PMW của chúng tôi và gán nó vào một nút trong ruy-băng hoặc phím tắt bàn phím, và sau đó chạy nó bất kỳ lúc nào trên bất kỳ sổ làm việc mở nào.
# 3 - Ctrl + Dấu cách để Tự động hoàn tất
Đây chắc chắn là một trong những phím tắt mà tôi sử dụng nhiều nhất trong VBA. Khi chúng ta gõ mã, Ctrl+ Spacemở trình đơn thả xuống Intellisense chứa danh sách các đối tượng, thuộc tính, phương thức, hằng số và các biến phù hợp.
Để sử dụng phím tắt Ctrl+ Spacetrong VB Editor:
- Bắt đầu nhập một dòng mã như ActiveCell.
- Sau khi nhập một vài chữ cái đầu tiên, nhấn Ctrl + Space
- Bạn sẽ thấy danh sách tất cả các từ VBA bắt đầu bằng Act.
- Nhấn mũi tên Lên / Xuống để chọn từ
- Sau đó nhấn Tab hoặc Enter để hoàn thành từ.
Có hai lợi ích chính cho lối tắt này:
- Nó tiết kiệm thời gian với việc phải gõ từ dài và tên biến.
- Nó ngăn chặn lỗi chính tả vì VBA đang hoàn thành các từ cho bạn.
Những lợi ích này có thể là trình tiết kiệm thời gian HUGE khi gỡ lỗi mã của bạn.
# 4 - Intellisense for Worksheets
Chúng tôi cũng thường thấy menu thả xuống Intellisense sau khi nhập dấu chấm (.) Trong Trình chỉnh sửa VB.
Tuy nhiên, đôi khi nó không hoạt động. Một trường hợp phổ biến là với thuộc tính Bảng tính.
Nếu chúng ta gõ Worksheets("Sheet1").
, chúng ta KHÔNG thấy menu Intellisense. Điều này có thể gây phiền toái và khiến bạn nghĩ rằng Intellisense không hoạt động.
Lý do nó không hoạt động là do thuộc tính Bảng tính có thể chứa tham chiếu đến một hoặc nhiều trang tính. Tùy thuộc vào tham chiếu, các thuộc tính và phương thức sẽ khác nhau đối với từng trường hợp. Sẽ rất tuyệt nếu Intellisense vẫn đủ thông minh để nhận ra điều này, nhưng đó chỉ là một trong những điều chúng ta phải sống với…
Có hai cách để tìm hiểu và xem Intellisense cho các bảng tính:
- Sử dụng CodeName của trang tính mà chúng tôi muốn tham khảo. Đây là phương pháp ưa thích của tôi để tham khảo bảng tính vì mã sẽ không bị hỏng nếu người dùng thay đổi tên trang tính.
- Đặt bảng tính thành biến đối tượng Worksheets trước. Sau đó, khi chúng ta gõ tên biến theo sau là dấu chấm (
ws.
), menu Intellisense sẽ xuất hiện.
# 5 - Sử dụng bình luận tự do
Chúng tôi có thể thêm nhận xét vào mã của chúng tôi để giúp giải thích từng phần mã nào.
Để tạo chú thích trong VBA, bạn gõ một dấu nháy đơn ở đầu dòng. Khi bạn di chuyển con trỏ văn bản ra khỏi dòng, văn bản sẽ chuyển sang màu xanh lục.
Văn bản màu xanh lá cây giúp dễ dàng phân biệt các nhận xét khi đọc mã. VBA hoàn toàn bỏ qua các dòng chú thích và bạn có thể thêm bao nhiêu tùy thích.
Nhận xét mã của bạn là một chủ đề gây tranh cãi. Một số nhà phát triển tin rằng mã được viết đúng cách nên tự nói và rằng bạn không cần phải thêm nhận xét bổ sung. Tôi thấy quan điểm của họ, nhưng điều này không hiệu quả với tôi vì hai lý do .
- Khi tôi trở lại dự án của riêng tôi vài tháng sau đó, tôi không nhớ toàn bộ những gì vĩ mô đã làm. Nhận xét giống như tiêu đề trong bài đăng trên blog này và giúp bạn dễ dàng quét qua macro để tìm phần bạn đang tìm kiếm. Họ cũng nhanh chóng cho chúng tôi biết mỗi phần sẽ làm gì.
- Nếu bạn định chia sẻ dự án VBA của bạn hoặc cuối cùng đưa nó cho người khác để bảo trì, thì sẽ dễ dàng hơn cho họ để tìm hiểu mã của bạn nếu bạn thêm nhiều nhận xét. Tôi gọi đây là "lịch sự lập kế hoạch di sản của bạn". 🙂
# 6 - F8 để đi qua từng dòng mã
Phím tắt để duyệt qua từng dòng mã là F8. Tương đương Mac cho Bước vào / Qua là Cmd+ Shift+ I.
Điều này cho phép chúng tôi kiểm tra và gỡ lỗi từng dòng mã trong các macro của chúng tôi. Chúng ta cũng có thể mở Excel song song với VB Editor (hoặc trên một màn hình riêng biệt) để xem các hành động được thực hiện trong Excel khi mỗi dòng chạy.
Rất nhiều lần điều này có thể giúp bạn nhanh chóng tìm thấy lỗi có tham chiếu trang tính hoặc phạm vi.
Để sử dụng lối tắt Bước vào / Qua:
- Nhấp vào bên trong macro bạn muốn chạy. Bạn có thể nhấp vào bất kỳ dòng mã nào. Macro sẽ luôn bắt đầu ở trên cùng.
- Nhấn F8.
- Tên macro sẽ được đánh dấu màu vàng.
- Nhấn F8 lần nữa để chạy dòng đó và tô sáng dòng tiếp theo.
- Tiếp tục nhấn F8để chạy từng dòng.
Điều quan trọng cần lưu ý là dòng được đánh dấu màu vàng chưa được chạy. Nó sẽ được chạy khi bạn nhấn F8lại.
# 7 - Gán Macro cho hình dạng
Các điều khiển trang tính cho các nút chạy macro là một chút tìm kiếm ngày. May mắn thay chúng ta cũng có thể sử dụng bất kỳ hình dạng nào trong Excel để chạy macro. Các hình dạng có thể được tô màu và định dạng để làm cho chúng trông giống các nút hiện đại mà bạn tìm thấy trên web và các ứng dụng dành cho thiết bị di động.
Để gán một macro để hình dạng:
- Chèn một hình dạng trên một trang tính và định dạng nó theo ý thích của bạn. Điều này thường sẽ là hình chữ nhật hoặc hình tròn có chứa văn bản.
- Nhấp chuột phải vào hình dạng và chọn “Gán Macro…”.
- Chọn macro từ danh sách và nhấn OK. Macro thường sẽ là một macro được lưu trữ trong cùng một sổ làm việc dưới dạng hình dạng.
- Nhấp vào hình dạng bằng cách chọn một ô trong trang tính.
- Khi bạn di chuyển hình dạng con trỏ sẽ thay đổi thành con trỏ tay. Nhấp vào hình sẽ chạy macro.
Tôi khuyên bạn nên có một hộp thông báo Có / Không xuất hiện trước khi macro thực sự chạy. Điều này ngăn chặn bất kỳ nút bấm ngẫu nhiên nào.
# 8 - Tự động hóa các tác vụ lặp lại với The For Loop tiếp theo
Chúng tôi có xu hướng thực hiện rất nhiều tác vụ giống nhau trong Excel. Đây có thể là các tác vụ như: áp dụng định dạng cho nhiều phạm vi / trang tính, tạo danh sách trang tính, sao chép dữ liệu vào từng sổ làm việc, đặt bộ lọc trên mỗi bảng tổng hợp, v.v.
Vòng lặp là một trong những công cụ mạnh mẽ nhất trong VBA cho phép chúng tôi tự động hóa các tác vụ này. Vòng lặp sẽ lặp qua từng mục trong một bộ sưu tập (suy nghĩ các trang tính trong một sổ làm việc hoặc các ô trong một phạm vi) và thực hiện bất kỳ mã nào bạn thích trên mỗi mục.
Có một vài loại vòng lặp khác nhau, nhưng Vòng lặp tiếp theo là phổ biến nhất. Kiểm tra bài viết chuyên sâu của tôi về The For Next Loop trong VBA để biết thêm chi tiết về kỹ thuật mã hóa phải biết này.
# 9 - Sử dụng Option Explicit
Đây là một chủ đề gây tranh cãi khác, nhưng tôi yêu cầu (lịch sự yêu cầu) rằng tất cả các thành viên của Khóa học VBA Pro của tôi sử dụng Option Explicit.
Vậy, nó là gì và tại sao?
Option Explicit yêu cầu chúng ta khai báo tất cả các biến. Khi chúng ta thấy các dòng mã với các câu lệnh Dim ở trên cùng của một macro, điều này là khai báo một biến.
Về cơ bản, chúng tôi đang nói với VBA để tạo biến trong bộ nhớ được sử dụng sau trong khi mã đang chạy. Sau đó, chúng tôi có thể đặt giá trị hoặc tham chiếu đến đối tượng cho các biến này trong macro bên dưới câu lệnh Dim.
Lợi ích chính với Option Explicit là nó ngăn chặn lỗi chính tả và tiết kiệm thời gian . VB Editor sẽ ném một lỗi biên dịch: Biến không được xác định khi bạn cố gắng chạy mã nếu một biến trong mã không được khai báo. Nó cũng sẽ làm nổi bật biến để bạn có thể khai báo hoặc sửa lỗi đánh máy.
Nếu bạn không có Option Explicit on và misspell một biến, mã sẽ vẫn chạy và có thể tạo ra lỗi trong kết quả. Nếu vĩ mô của bạn dài thì có thể mất rất nhiều thời gian để tìm ra những lỗi chính tả này. Tin tôi đi. Đã từng trải qua rồi!
Option Explicit ngăn ngừa các lỗi này và giúp bạn luôn khỏe mạnh. 🙂
Để bật Option Explicit trên bạn chỉ cần gõ từ Option Explicit ở phía trên cùng của mô-đun mã. Bạn cũng có thể có VB Editor tự động thêm các từ vào các mô-đun mã mới bằng cách vào Tools> Options> đánh dấu vào ô "Require Variable Declaration". Option Explicit bây giờ sẽ xuất hiện ở đầu mỗi mô-đun mã MỚI mà bạn tạo.
# 10 - Bảng Excel (ListObjects)
Có rất nhiều lợi ích khi sử dụng Bảng Excel trong sổ làm việc của chúng tôi. Chúng tiết kiệm thời gian với định dạng dữ liệu, công thức tự động điền và hoạt động tốt như nguồn của bảng tổng hợp .
Các bảng Excel cũng giúp bạn viết mã VBA dễ dàng hơn cho các phạm vi dữ liệu động. Đây là danh sách hoặc tập dữ liệu nơi số hàng hoặc cột liên tục thay đổi khi bạn nhận dữ liệu mới / cập nhật.
Ví dụ, dòng mã sau đây tham chiếu đến các ô trong phạm vi A2: A15.
Phạm vi ("A2: A10"). Font.Bold = True
Đó là một tham chiếu phạm vi mã hóa cứng. Nếu bạn thêm dữ liệu mới vào dưới cùng, bạn sẽ phải thay đổi mã theo cách thủ công để bao gồm các hàng mới.
Tuy nhiên, nếu chúng tôi lưu trữ dữ liệu trong Bảng Excel và tham chiếu cột Bảng, chúng tôi không phải lo lắng về điều này.
Dòng mã sau tham chiếu cùng một cột.
Phạm vi ("Bảng 1 [Ngày]"). Font.Bold = True
Các lợi thế ở đây là mã sẽ tự động bao gồm các hàng mới bổ sung vào Bảng . Không cần cập nhật hoặc bảo trì mã theo cách thủ công.
Chúng tôi cũng có thể tham chiếu Bảng Excel với đối tượng, thuộc tính và phương thức ListObjects trong VBA.
ActiveSheet.ListObjects ("Bảng57"). ListColumns ("Ngày"). DataBodyRange.Font.Bold = True
Có chắc chắn một số lợi thế để sử dụng ListObjects khi nói đến việc sửa đổi cấu trúc Bảng (thêm / xóa các hàng / cột) và các thuộc tính, và lặp qua Bảng. Kiểm tra bài viết của bạn tốt Chris Newman trên ListObjects trong VBA để biết thêm ví dụ.
# 11 - Lấy Mã bằng Trình ghi Macro
Các Macro Recorder là một tính năng tuyệt vời của Excel và VBA. Nó tạo mã VBA khi chúng ta thực hiện các hành động trong Excel .
Ví dụ, sau khi chúng ta bật máy ghi macro, chúng ta có thể thực hiện công việc bình thường trong Excel như viết công thức hoặc sao chép và dán dữ liệu. Trình ghi vĩ mô sẽ tạo tất cả mã VBA cho những hành động này và lưu trữ nó trong một mô-đun mã.
Đây là một công cụ tuyệt vời để sử dụng khi chúng ta lần đầu tiên bắt đầu với các macro. Và nó cũng là một công cụ tuyệt vời cho việc học và nhận các đoạn mã. Mô hình đối tượng Excel là rất lớn , và nó không thể (đối với tôi) để ghi nhớ tất cả các thuộc tính, phương thức và các tham chiếu đối tượng. Vì vậy, máy ghi macro là một cách tuyệt vời để lấy mã số cho bảng tổng hợp, liệt kê đối tượng, slicer, hình dạng hoặc bất kỳ đối tượng nào khác mà bạn không quen thuộc.
Máy ghi vĩ mô cũng có những hạn chế của nó . Nó sẽ KHÔNG tạo mã cho các vòng lặp, nếu các câu lệnh, xử lý lỗi, các hộp thông báo, vv Chúng ta cần học cách viết mã để thực hiện các kỹ thuật nâng cao hơn này cho phép chúng ta tự động hoàn toàn các quy trình và tạo các ứng dụng trong Excel.
# 12 - Cửa sổ ngay lập tức
Cửa sổ ngay lập tức trong VB Editor cho phép chúng tôi chạy một dòng mã. Chúng tôi có thể chạy một hành động (phương pháp) trên một đối tượng, hoặc trả về kết quả của mã trở lại Cửa sổ ngay lập tức. Có lẽ chúng tôi muốn xác định có bao nhiêu trang tính trong sổ làm việc.
Loại? Worksheets.Count và nhấn Enter. Kết quả sẽ được hiển thị trên dòng bên dưới.
Cửa sổ ngay lập tức cũng là nơi mà phương thức Debug.Print xuất ra.
Lối tắt bàn phím để mở Cửa sổ ngay lập tức trong Trình chỉnh sửa VB là Ctrl+G
# 13 - Gán lối tắt bàn phím cho macro
Chúng tôi cũng có thể chỉ định phím tắt để chạy các macro mà chúng tôi sử dụng thường xuyên. Tôi khuyên bạn nên lưu trữ các macro này trong Sổ làm việc Macro cá nhân của bạn .
Để gán lối tắt bàn phím:
- Nhấn nút Macro trên tab Nhà phát triển hoặc Chế độ xem trong ruy-băng.
- Chọn tệp có chứa macro từ trình đơn thả xuống Macro trong trình đơn thả xuống.
- Chọn macro từ hộp danh sách.
- Nhấn nút “Tùy chọn…”.
- Nhập chữ cái trong hộp Phím tắt mà bạn muốn gán macro. Tất cả các phím tắt sẽ bắt đầu bằng Ctrl. Bạn có thể giữ phím Shift trong khi nhập chữ cái để tạo phím tắt Ctrl + Shift. Điều này thường được khuyến nghị vì hầu hết các tổ hợp phím Ctrl + đã có phím tắt chuyên dụng trong Excel.
- Nhấn OK và đóng cửa sổ macro.
- Bây giờ bạn có thể nhấn tổ hợp phím tắt để chạy macro được gán.
# 14 - Kiểm tra xem phạm vi đã được chọn chưa
Đôi khi bạn sẽ muốn đảm bảo rằng người dùng có một phạm vi (ô) được chọn trước khi macro của bạn chạy. Nếu họ có một hình dạng (biểu đồ, slicer, vv) được chọn thì điều này có thể gây ra lỗi trong mã của bạn.
Ví dụ: tôi có macro xóa các hàng trống trong phạm vi đã chọn. Để macro này chạy đúng cách, người dùng cần phải có một dải ô được chọn trước tiên.
Đây là mã sẽ kiểm tra nếu một phạm vi được chọn.
'Kiểm tra xem một phạm vi có được chọn không
Nếu TypeName (Selection) <> "Range" Sau đó
MsgBox "Vui lòng chọn một dải ô trước tiên", vbOKOnly, "Chọn Phạm vi"
Thoát Sub
End Nếu
Hàm TypeName trả về kiểu dữ liệu hoặc tên của đối tượng cho một biến hoặc đối tượng đã cho. Trong trường hợp này, nó đánh giá phép chọn và trả về kiểu đối tượng được chọn. Nếu nó không phải là (<>) một phạm vi, thì câu lệnh If là đúng.
Bạn thường muốn đặt điều này ở đầu macro. Nếu phạm vi KHÔNG được chọn thì Hộp Thông báo (cửa sổ bật lên) sẽ xuất hiện để chỉ thị cho người dùng chọn một phạm vi. Dòng Sub Exit sẽ kết thúc macro.
# 15 - Ctrl + Y để xóa một dòng mã
Trong VB Editor, Ctrl+ Yxóa dòng mã mà con trỏ văn bản đang ở.
Điều này tạo ra rất nhiều sự nhầm lẫn vì Ctrl + Y thường được sử dụng cho lệnh Làm lại trong hầu hết các ứng dụng khác, bao gồm cả Excel!
Nếu bạn nhìn vào menu Edit trong VB Editor, bạn sẽ thấy rằng không có phím tắt dành riêng cho Redo. Chúng ta có thể sử dụng Alt, E, Rnhư một phím tắt thay thế cho chức năng Redo.
Đây chỉ là một trong những quirks lạ của VBA mà thực sự là tốt để biết.
# 16 - Ctrl + i cho Thông tin nhanh
Đây là một phím tắt tuyệt vời khác để biết. Ctrl+ ihiển thị screentip mà bạn thấy viết hoặc chạy mã. Điều này cho phép bạn xem tất cả các tham số trong thuộc tính, phương thức hoặc hàm.
Để sử dụng phím tắt Ctrl + i:
- Đặt con trỏ văn bản vào từ bạn muốn hiển thị screentip thông tin cho.
- Nhấn Ctrl+ i.
- Screentip sẽ xuất hiện.
- Nhấn Escape để đóng hoặc di chuyển con trỏ.
Nếu bạn có biến được chọn trong một dòng và bạn muốn xem thông tin tham số thay vì giá trị của biến / kiểu dữ liệu, sau đó nhấn Ctrl+ Shift+ iđể xem thông tin tham số.
# 17 - Ctrl + J Mở trình đơn thả xuống Intellisense
Các Ctrl+ Jshortcut sẽ mở ra thả Intellisense down menu hiển thị một danh sách các đối tượng, tài sản, phương pháp, các biến, vv
Tôi thường sử dụng điều này khi tôi đã gõ một dòng mã và kết thúc bằng một khoảng thời gian, như Phạm vi (“A1”).
Sau đó tôi muốn quay trở lại dòng đó và xem phần Intellisense thả xuống. Nhấn Ctrl+ Jmở menu. Nếu không, bạn phải xóa khoảng thời gian và nhập lại.
Chúng ta cũng có thể sử dụng Ctrl + J để chọn một biến khác từ danh sách. Nếu bạn đã sử dụng tên biến sai ở đâu đó hoặc cần thay đổi tên đó, hãy nhấn Ctrl + J để xem danh sách tên biến. Nếu bạn tiền tố tên biến của bạn (aka ký hiệu Hungary), thì các biến khác sẽ khá gần trong danh sách đó.
# 18 - Chức năng bảng tính
Bạn có biết chúng ta có thể sử dụng các hàm trang tính trong VBA không? Đây là các hàm chúng tôi sử dụng trong một công thức trong Excel như: vlookup, match, countif, max, min, v.v.
Nhập WorksheetFunction. trong một macro để xem danh sách tất cả các hàm Excel có sẵn trong VBA.
Đây là tốt nhất của cả hai thế giới theo ý kiến của tôi. Chúng ta có thể sử dụng sức mạnh của các hàm Excel trong mã VBA của chúng ta.
Hàm screentip cho hàm hiển thị số lượng đối số, nhưng nó không hiển thị tên của các đối số. Vì vậy, chúng ta thường cần phải gõ một công thức trong Excel để xác định những gì mỗi đối số là (trừ khi bạn có họ ghi nhớ).
Hàm trang tính mà tôi sử dụng thường xuyên nhất trong VBA là Kết hợp . Chúng ta có thể sử dụng Match để tra cứu một giá trị và trả về số hàng hoặc cột của ô chứa giá trị khớp. Điều này đôi khi có thể dễ dàng hơn sau đó sử dụng phương pháp Range.Find.