So sánh VBA Operators: Không bằng nhau, Less hơn hoặc bằng
⚡ Tóm tắt thông minh
So sánh VBA OperaCác toán tử kiểm tra một giá trị so với một giá trị khác và trả về True hoặc False. Trang này định nghĩa sáu toán tử, hiển thị chúng bên trong một câu lệnh If, giải thích cách so sánh văn bản và ngày tháng, và liệt kê các lỗi dẫn đến kết quả sai.

So sánh VBA Operaxoắn
Đây là các toán tử được sử dụng để so sánh các giá trị. Các toán tử so sánh bao gồm: bằng, nhỏ hơn, lớn hơn và không bằng.
Các toán tử so sánh được sử dụng để so sánh các giá trị cho mục đích xác thực. Giả sử bạn đang phát triển...ping Một ứng dụng bán hàng đơn giản. Trong ứng dụng này, bạn muốn xác thực các giá trị đã nhập trước khi ghi nhận giao dịch. Trong trường hợp này, bạn có thể sử dụng các toán tử so sánh. Toán tử này sẽ kiểm tra các số âm hoặc để đảm bảo rằng số tiền đã thanh toán không vượt quá số tiền đã ghi trên hóa đơn. Các toán tử so sánh rất hữu ích trong những tình huống như vậy.
Mỗi phép so sánh trả về một trong hai giá trị, Đúng hoặc Sai, và không bao giờ là một con số. Kết quả đó chính là cơ sở để câu lệnh If hoạt động.
Bảng sau đây liệt kê các toán tử so sánh được xác định trong VBA.
| Operator | Mô tả Chi tiết |
|---|---|
| = | Bằng: kiểm tra xem hai giá trị có bằng nhau không. Nó cũng được sử dụng như một toán tử gán |
| < | Less than: kiểm tra xem giá trị bên trái có nhỏ hơn giá trị bên phải hay không. |
| > | Lớn hơn: kiểm tra xem giá trị bên trái có lớn hơn giá trị bên phải hay không. |
| <> | Không bằng: kiểm tra xem hai giá trị có khác nhau hay không. |
| <= | Less nhỏ hơn hoặc bằng: kiểm tra xem giá trị bên trái có nhỏ hơn hoặc bằng giá trị bên phải hay không. |
| >= | Lớn hơn hoặc bằng: kiểm tra xem giá trị bên trái có lớn hơn hoặc bằng giá trị bên phải hay không. |
Việc áp dụng mỗi toán tử cho hai biến giúp dễ dàng dự đoán kết quả trả về hơn.
So sánh VBA Operators với ví dụ
Bảng sau đây hiển thị So sánh Excel VBA Operators với các ví dụ và đầu ra.
| S / N | Operator | Ví dụ | Đầu ra |
|---|---|---|---|
| 1 | = | Nếu x = z thì | Trả về true nếu chúng bằng nhau, ngược lại trả về false |
| 2 | < | Nếu x < z Thì | Trả về true nếu x nhỏ hơn z, nếu không thì trả về false |
| 3 | > | Nếu x > z thì | Trả về true nếu x lớn hơn z, nếu không thì trả về false |
| 4 | <> | Nếu x <> z Thì | Trả về true nếu chúng không bằng nhau, ngược lại trả về false |
| 5 | <= | Nếu x <= z Thì | Trả về true nếu x nhỏ hơn hoặc bằng z, nếu không nó trả về false |
| 6 | >= | Nếu x >= z thì | Trả về true nếu x lớn hơn hoặc bằng z, nếu không thì trả về false |
Mã nguồn ví dụ
So sánh bằng nhau Operator
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
ĐÂY,
- “Nếu 2 = 1 Thì… Ngược lại… Kết thúc Nếu” sử dụng câu lệnh if để đánh giá điều kiện “2 = 1”
- “Tin nhắnBox... " Là một hàm tích hợp hiển thị hộp thông báo.
- Tham số đầu tiên “True” hoặc “False” sẽ được hiển thị trong hộp thông báo. Trong ví dụ của chúng tôi, 2 không bằng 1, do đó, nó sẽ hiển thị “false” trong hộp thông báo.
- Tham số thứ hai “vbOKOnly” là nút được hiển thị trong hộp thông báo
- Tham số thứ ba “Bằng Opera“tor” là tiêu đề của hộp tin nhắn.
Thực hiện đoạn mã trên sẽ cho kết quả sau
Phép thử đơn lẻ đó là hình thức đơn giản nhất. Các macro thực sự kết hợp các phép so sánh và phân nhánh giữa nhiều kết quả khác nhau.
Cách sử dụng phép so sánh Operacác biến trong câu lệnh If
Toán tử so sánh hiếm khi hữu ích khi đứng một mình. Kết quả Đúng hoặc Sai của nó được đưa vào cấu trúc quyết định, và câu lệnh If là câu lệnh bạn sẽ sử dụng nhiều nhất. Ví dụ dưới đây chấm điểm một điểm số được lưu trong ô A1 và ghi kết quả bên cạnh.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
Macro này đọc điểm số một lần, sau đó kiểm tra điểm số đó theo ba điều kiện khác nhau. Bốn điểm sau giải thích tại sao nó hoạt động như vậy.
- Thứ tự quan trọng: VBA dừng lại ở nhánh đầu tiên trả về True. Việc đặt Điểm số >= 50 trước Điểm số >= 90 Sẽ coi mọi điểm số cao đều là đạt.
- Else là cụm từ bao quát mọi trường hợp: Bất kỳ giá trị nào không vượt qua tất cả các bài kiểm tra trước đó sẽ được chuyển tiếp đến phần Else, do đó không có dữ liệu đầu vào nào bị bỏ sót.
- Không được nối tiếp: VBA không thể đọc 0 <= Điểm <= 100. Viết Nếu Điểm >= 0 Và Điểm <= 100 thì bằng cách sử dụng toán tử logic thay thế.
- Cùng một bài kiểm tra, nhưng với cấu trúc khác: Điều kiện tương tự cũng chi phối Do While và Select Case, vì vậy các toán tử này sẽ được áp dụng cho mọi vòng lặp mà bạn viết.
💡 Mẹo: Khai báo biến với kiểu dữ liệu số, như được hiển thị bên dưới. Điểm số giảm dầnNếu giá trị vẫn là một biến thể chứa văn bản, “9” > “10” Trả về True vì phép so sánh được thực hiện từng ký tự một.
So sánh văn bản và ngày tháng trong VBA
Numbers So sánh chính xác như phép toán số học gợi ý, nhưng văn bản và ngày tháng tuân theo các quy tắc riêng của chúng, và cả hai đều gây bất ngờ cho người mới bắt đầu.
Các chuỗi được so sánh từng ký tự một dựa trên vị trí sắp xếp của chúng, vì vậy “Apple” < “Banana” trả về True. Theo mặc định, phép so sánh phân biệt chữ hoa chữ thường, có nghĩa là “guru99” = “Guru99” trả về False. Đặt Tùy chọn So sánh văn bản Việc đặt lệnh ở đầu mô-đun khiến mọi phép so sánh chuỗi trong mô-đun đó đều bỏ qua chữ hoa chữ thường. Để thực hiện một phép thử duy nhất mà không thay đổi mô-đun, hãy sử dụng StrComp với đối số vbTextCompare.
Ngày tháng được lưu trữ dưới dạng số sê-ri được tính từ ngày 30 tháng 12 năm 1899, do đó chúng được so sánh trực tiếp với cùng sáu toán tử. Việc ghi Nếu DueDate < Date thì Công cụ này phát hiện chính xác mục quá hạn vì hàm Date trả về ngày hệ thống hiện tại dưới dạng số sê-ri tương tự. Điểm cần lưu ý là ngày được lưu trữ dưới dạng văn bản: “01/02/2026” khi đọc từ tệp nhập khẩu là một chuỗi ký tự chứ không phải ngày tháng, và được so sánh theo thứ tự bảng chữ cái. Hãy chuyển đổi nó bằng hàm CDate trước khi kiểm tra.
Nắm vững các quy tắc cho từng loại sẽ giúp loại bỏ hầu hết các bất ngờ, nhưng một vài lỗi vẫn có thể mắc phải đối với các nhà phát triển giàu kinh nghiệm.
Những lỗi thường gặp khi so sánh giá trị trong VBA
Năm vấn đề dưới đây là nguyên nhân chính dẫn đến hầu hết các phép so sánh cho ra kết quả không như mong đợi.
- Bài tập bị nhầm lẫn với sự so sánh: Ngoài một điều kiện nhất định, x = 5 Biến x lưu trữ giá trị 5. Bên trong câu lệnh If, các ký hiệu tương tự kiểm tra sự bằng nhau. VBA không có toán tử == riêng biệt, vì vậy hãy đọc kỹ ngữ cảnh.
- Kiểm tra Double giá trị cho sự bằng nhau chính xác: Độ chính xác được lưu trữ có nghĩa là 0.1 + 0.2 = 0.3 trả về False. Thay vào đó, hãy so sánh sự khác biệt đã được làm tròn, ví dụ: Nếu Abs(a – b) < 0.000001 thì.
- So sánh bất cứ thứ gì với Null: Giá trị null không bằng bất kỳ giá trị nào, kể cả một giá trị null khác. Hãy kiểm tra bằng IsNull thay vì... = Null.
- So sánh văn bản với một con số: Ô chứa chuỗi ký tự “100” không tương đương với số 100. Hãy chuyển đổi bằng CLng hoặc CDbl trước khi kiểm tra.
- Đọc .Text thay vì .Value: Thuộc tính .Text trả về nội dung hiển thị, đã được cắt bớt theo chiều rộng cột và định dạng. Luôn so sánh với .Value.
Tải xuống tệp Excel ở trên Code

