4 sai lầm cần tránh khi lập trình macro Excel với VBA

4 sai lầm cần tránh khi lập trình macro Excel với VBA

Microsoft Excel đã là một công cụ phân tích dữ liệu có khả năng, nhưng với khả năng tự động hóa các tác vụ lặp đi lặp lại với macro bằng cách viết mã đơn giản trong Visual Basic for Applications (VBA), nó mạnh hơn nhiều. Tuy nhiên, được sử dụng không đúng cách, VBA có thể gây ra sự cố.





Ngay cả khi bạn không phải là lập trình viên, VBA cung cấp các chức năng đơn giản cho phép bạn thêm chức năng ấn tượng vào bảng tính của mình.





Không quan trọng nếu bạn là một chuyên gia VBA, người tạo bảng điều khiển trong Excel hay một người mới viết các đoạn mã đơn giản thực hiện các phép tính ô cơ bản. Làm theo các kỹ thuật lập trình đơn giản sau để học cách viết mã sạch, không có lỗi.





Bắt đầu với VBA

VBA có thể làm tất cả mọi thứ gọn gàng cho bạn. Từ việc viết các macro sửa đổi trang tính thành gửi email từ bảng tính Excel bằng tập lệnh VBA có rất ít giới hạn về năng suất của bạn.

Nếu bạn chưa lập trình VBA trong Excel trước đó, bạn sẽ cần phải kích hoạt Công cụ dành cho nhà phát triển trong chương trình Excel của mình. Tin tốt là việc kích hoạt các công cụ dành cho Nhà phát triển thực sự khá dễ dàng. Chỉ cần đi đến Tập tin > Tùy chọn và sau đó Tuy Biên ruy-băng . Chỉ cần di chuyển Nhà phát triển tab từ ngăn bên trái sang bên phải.



Đảm bảo hộp kiểm đã bật tab này và bây giờ tab Nhà phát triển sẽ xuất hiện trong menu Excel của bạn.

Cách dễ nhất để vào cửa sổ soạn thảo mã từ đây là chỉ cần nhấp vào Xem mã nút dưới Kiểm soát trong menu Nhà phát triển.





Bây giờ bạn đã sẵn sàng để viết mã VBA! Tab này là nơi bạn sẽ truy cập VBA cũng như ghi macro trong Excel . Bây giờ Excel đã sẵn sàng hoạt động, hãy cùng điểm qua một số lỗi phổ biến cần tránh và cách phòng tránh chúng.

1. Tên biến kinh khủng

Bây giờ bạn đang ở trong cửa sổ mã, đã đến lúc bắt đầu viết mã VBA. Bước quan trọng đầu tiên trong hầu hết các chương trình, cho dù là bằng VBA hay bất kỳ ngôn ngữ nào khác, là xác định các biến của bạn. Đặt tên biến không đúng cách là một trong những lỗi lập trình phổ biến nhất mà các nhà phát triển mới mắc phải.





không thể tìm thấy hoặc tải lớp chính chính

Trong suốt nhiều thập kỷ viết mã của mình, tôi đã bắt gặp nhiều trường phái suy nghĩ khi nói đến các quy ước đặt tên biến và học được một vài quy tắc một cách khó khăn. Dưới đây là một số mẹo nhanh để tạo tên biến:

  • Làm cho chúng càng ngắn càng tốt.
  • Làm cho chúng càng mang tính mô tả càng tốt.
  • Mở đầu chúng với kiểu biến (boolean, số nguyên, v.v.).

Đây là ảnh chụp màn hình mẫu từ một chương trình mà tôi thường sử dụng để thực hiện các cuộc gọi WMIC Windows từ Excel để thu thập thông tin PC.

Khi bạn muốn sử dụng các biến bên trong một hàm trong mô-đun hoặc đối tượng (tôi sẽ giải thích điều này bên dưới), thì bạn cần phải khai báo nó như một biến 'công khai' bằng cách mở đầu khai báo bằng Công cộng . Nếu không, các biến được khai báo bằng cách đặt trước chúng bằng từ Không có .

Như bạn có thể thấy, nếu biến là một số nguyên, nó sẽ bắt đầu bằng NS . Nếu đó là một chuỗi, thì P . Đây là một tùy chọn cá nhân giúp ích cho sau này khi bạn đang lập trình vì bạn sẽ luôn biết loại dữ liệu nào mà biến đó giữ bằng cách nhìn vào tên.

Ngoài ra, hãy nhớ đặt tên trang tính trong sổ làm việc Excel của bạn.

Bằng cách này, khi bạn tham chiếu đến tên trang tính trong mã VBA Excel của mình, bạn đang đề cập đến một cái tên có ý nghĩa. Trong ví dụ trên, tôi có một trang tính nơi tôi lấy thông tin Mạng, vì vậy tôi gọi trang tính là 'Mạng'. Bất cứ lúc nào tôi muốn tham khảo trang Mạng, tôi có thể thực hiện nhanh chóng mà không cần tra cứu số trang đó là gì.

2. Phá vỡ thay vì lặp lại

Một trong những vấn đề phổ biến nhất mà các lập trình viên VBA mới hơn gặp phải khi họ bắt đầu viết mã là xử lý đúng các vòng lặp.

Vòng lặp rất phổ biến trong Excel vì thường bạn đang xử lý các giá trị dữ liệu xuống toàn bộ một hàng hoặc một cột, vì vậy bạn cần lặp lại để xử lý tất cả chúng.

Các lập trình viên mới thường muốn thoát ra khỏi một vòng lặp (vòng lặp VBA For hoặc vòng lặp VBA Do While) ngay lập tức khi một điều kiện nhất định là đúng.

Đây là một ví dụ về phương pháp này được sử dụng để phá vỡ một vòng lặp VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

Các lập trình viên mới sử dụng phương pháp này vì nó dễ dàng. Cố gắng tránh phá vỡ vòng lặp một cách rõ ràng.

Thông thường, mã xuất hiện sau 'break' đó rất quan trọng để xử lý. Một cách rõ ràng và chuyên nghiệp hơn nhiều để xử lý các điều kiện mà bạn muốn thoát khỏi vòng lặp giữa chừng là chỉ cần đưa điều kiện thoát đó vào một thứ gì đó giống như câu lệnh VBA While.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Điều này cho phép một dòng mã logic của bạn. Bây giờ mã sẽ lặp lại và dừng lại khi đạt đến 6. Không cần bao gồm các lệnh EXIT hoặc BREAK khó xử giữa vòng lặp.

3. Không sử dụng mảng

Một sai lầm thú vị khác mà các lập trình viên VBA mới mắc phải là cố gắng xử lý mọi thứ bên trong nhiều vòng lặp lồng nhau lọc xuống các hàng và cột trong quá trình tính toán.

Điều này cũng có thể dẫn đến các vấn đề lớn về hiệu suất. Vòng qua một cột và trích xuất các giá trị mỗi lần là một kẻ giết người trên bộ xử lý của bạn. Một cách hiệu quả hơn để xử lý danh sách số dài là sử dụng một mảng.

Nếu bạn chưa bao giờ sử dụng một mảng trước đây, đừng lo lắng. Hãy tưởng tượng một mảng như một khay đá với một số 'khối' nhất định mà bạn có thể đưa thông tin vào. Các hình khối được đánh số từ 1 đến 12 và đó là cách bạn 'đưa' dữ liệu vào chúng.

Bạn có thể dễ dàng xác định một mảng chỉ bằng cách nhập Dim arrMyArray (12) dưới dạng Số nguyên .

iphone hay samsung tốt hơn

Điều này tạo ra một 'khay' với 12 chỗ trống có sẵn để bạn lấp đầy.

Đây là mã lặp hàng mà không có mảng có thể trông như thế nào:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

Trong ví dụ này, mã đang xử lý xuống từng ô trong phạm vi và thực hiện tính toán nhiệt độ.

Nếu bạn muốn thực hiện một số phép tính khác trên các giá trị tương tự này thì quá trình sẽ rất rắc rối. Bạn phải sao chép mã này, xử lý qua tất cả các ô này và thực hiện phép tính mới của mình. Tất cả chỉ vì một sự thay đổi!

Đây là một ví dụ tốt hơn, sử dụng một mảng. Đầu tiên, hãy tạo mảng.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

Các x-1 để trỏ đến phần tử mảng chỉ cần thiết vì vòng lặp For bắt đầu từ 1. Các phần tử của mảng cần bắt đầu từ 0.

Bây giờ bạn đã có mảng, rất đơn giản để xử lý nội dung.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

Ví dụ này đi qua toàn bộ mảng hàng ( UBound cung cấp cho bạn số lượng giá trị dữ liệu trong mảng), thực hiện tính toán nhiệt độ và sau đó đặt nó vào một mảng khác được gọi là arrMyTemps .

4. Sử dụng quá nhiều tài liệu tham khảo

Cho dù bạn đang lập trình bằng Visual Basic hay VBA chính thức, bạn sẽ cần bao gồm 'tài liệu tham khảo' để truy cập các tính năng nhất định.

Tài liệu tham khảo giống như 'thư viện' chứa đầy chức năng mà bạn có thể khai thác nếu bật tệp đó. Bạn có thể tìm thấy Tài liệu tham khảo trong chế độ xem Nhà phát triển bằng cách nhấp vào Công cụ trong menu và sau đó nhấp vào Người giới thiệu .

Những gì bạn sẽ tìm thấy trong cửa sổ này là tất cả các tham chiếu hiện được chọn cho dự án VBA hiện tại của bạn.

Bạn nên kiểm tra danh sách này vì các tham chiếu không cần thiết có thể gây lãng phí tài nguyên hệ thống. Nếu bạn không sử dụng bất kỳ thao tác nào với tệp XML, thì tại sao lại chọn Microsoft XML? Nếu bạn không giao tiếp với cơ sở dữ liệu, hãy xóa Microsoft DAO, v.v.

Nếu bạn không chắc chắn những tham chiếu đã chọn này làm gì, hãy nhấn F2 và bạn sẽ thấy Trình khám phá đối tượng. Ở đầu cửa sổ này, bạn có thể chọn thư viện tài liệu tham khảo để duyệt.

Sau khi được chọn, bạn sẽ thấy tất cả các đối tượng và các chức năng có sẵn, bạn có thể nhấp vào để tìm hiểu thêm.

Ví dụ: khi tôi nhấp vào thư viện DAO, nó nhanh chóng trở nên rõ ràng rằng đây là tất cả về kết nối và giao tiếp với cơ sở dữ liệu.

Giảm số lượng tham chiếu bạn sử dụng trong dự án lập trình của mình chỉ là một ý nghĩa tốt và sẽ giúp làm cho ứng dụng tổng thể của bạn chạy hiệu quả hơn.

cách sử dụng magicast trên xbox one

Lập trình trong Excel VBA

Toàn bộ ý tưởng thực sự viết mã trong Excel khiến nhiều người sợ hãi, nhưng nỗi sợ hãi này thực sự không cần thiết. Visual Basic for Applications là một ngôn ngữ rất đơn giản để học và nếu bạn làm theo các phương pháp phổ biến cơ bản được đề cập ở trên, bạn sẽ đảm bảo rằng mã của mình sạch sẽ, hiệu quả và dễ hiểu.

Đừng dừng lại ở đó. Xây dựng nền tảng kỹ năng Excel vững chắc với Hướng dẫn VBA cho người mới bắt đầu . Sau đó, tiếp tục tìm hiểu về VBA và macro với các tài nguyên giúp bạn tự động hóa bảng tính của mình.

Đăng lại Đăng lại tiếng riu ríu E-mail Nâng cấp lên Windows 11 có đáng không?

Windows đã được thiết kế lại. Nhưng điều đó có đủ thuyết phục bạn chuyển từ Windows 10 sang Windows 11?

Đọc tiếp
Chủ đề liên quan
  • Năng suất
  • Lập trình
  • Lập trình
  • Lập trình Visual Basic
  • Microsoft Excel
Giới thiệu về tác giả Anthony Grant(40 bài báo đã xuất bản)

Anthony Grant là một nhà văn tự do về Lập trình và Phần mềm. Anh ấy là sinh viên chuyên ngành Khoa học Máy tính, chuyên sâu về lập trình, Excel, phần mềm và công nghệ.

Xem thêm từ Anthony Grant

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký