Trong VBA, bạn có thể so sánh hai chuỗi bằng cách sử dụng StrComp hàm số. Trong hướng dẫn này, bạn sẽ học cách sử dụng hàm này với các phương pháp so sánh khác nhau.
Nếu bạn muốn tìm hiểu cách sử dụng toán tử VBA like để so sánh các kết quả phù hợp không chính xác, hãy nhấp vào đây: Toán tử VBA Like.
Nếu bạn muốn tìm hiểu cách sử dụng toán tử so sánh, hãy nhấp vào đây: Toán tử so sánh VBA - Không bằng & hơn thế nữa
Sử dụng hàm StrComp để so sánh hai chuỗi
Các StrComp hàm nhận hai chuỗi và phương thức so sánh làm đối số. Có 3 phương pháp so sánh:
- vbBinaryCompare - so sánh hai chuỗi nhị phân (phân biệt chữ hoa chữ thường);
- vbTextCompare - so sánh hai chuỗi dưới dạng văn bản (không phân biệt chữ hoa chữ thường);
- vbDatabaseCompare - phương pháp này chỉ khả dụng trong Microsoft Access và không có trong VBA.
Theo mặc định, hàm sử dụng phương thức nhị phân. Nếu chúng ta bỏ qua đối số này, hàm sẽ phân biệt chữ hoa chữ thường.
Hàm trả về các kết quả sau:
- 0 - nếu các chuỗi bằng nhau;
- -1 - nếu chuỗi 1 nhỏ hơn chuỗi 2;
- 1 - nếu chuỗi 1 lớn hơn chuỗi 2;
- Null - nếu một trong các chuỗi trống.
Đây là mã ví dụ:
123 | Dim intResult As IntegerintResult = StrComp ("Máy tính", "Máy tính") |
Trong ví dụ này, chúng tôi muốn kiểm tra xem các chuỗi "Máy vi tính" và "Máy vi tính" bằng nhau, sử dụng phương pháp so sánh mặc định (nhị phân). Kết quả của hàm là trong intResult Biến đổi. Như bạn có thể thấy trong Hình ảnh, cả hai chuỗi đều bằng nhau, do đó intResult có giá trị 0.
Hình ảnh 1. Sử dụng hàm StrComp với phương thức nhị phân trong VBA
Sử dụng hàm StrComp với phương thức nhị phân và văn bản
Bây giờ bạn sẽ thấy sự khác biệt giữa việc sử dụng phương pháp nhị phân và văn bản. Phương thức nhị phân có một số nhị phân cho mỗi ký tự, vì vậy chữ hoa và chữ thường là các ký tự khác nhau trong phương thức này. Mặt khác, phương pháp văn bản coi “S” và “s” là những chữ cái giống nhau. Nếu bạn muốn đặt hàm không phân biệt chữ hoa chữ thường, bạn cần đặt đối số thứ ba thành vbBinaryCompare. Đây là mã:
123456 | Dim intResult1 dưới dạng số nguyênDim intResult2 dưới dạng số nguyênintResult1 = StrComp ("Máy tính", "CompuTer")intResult2 = StrComp ("Máy tính", "CompuTer", vbTextCompare) |
Chúng tôi muốn so sánh các chuỗi "Máy vi tính" và "Máy vi tính", sử dụng cả hai phương pháp.
Trong biến intResult1, chúng tôi sẽ nhận được giá trị bằng phương thức nhị phân, trong khi intResult2 sẽ nhận được giá trị với phương thức văn bản. Bạn có thể thấy giá trị của hai biến này:
Hình ảnh 2. Sử dụng hàm StrComp với phương thức nhị phân và văn bản
Giá trị của intResult1 là 1, có nghĩa là hai chuỗi khác nhau đối với phương thức nhị phân. Đối với phương thức văn bản, hai chuỗi này bằng nhau, vì vậy giá trị của intResult2 là 0.