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.

  • ⚖️ Mục đích: Các toán tử so sánh xác thực dữ liệu bằng cách kiểm tra một điều kiện có giá trị là Đúng hoặc Sai.
  • 🔢 Sáu Operator: Bằng, nhỏ hơn, lớn hơn, không bằng, nhỏ hơn hoặc bằng, và lớn hơn hoặc bằng.
  • 🔁 Vai trò kép: Dấu bằng dùng để so sánh bên trong một điều kiện và gán giá trị bên ngoài điều kiện đó.
  • 🧪 Câu lệnh If: Mọi phép so sánh đều được đặt bên trong câu lệnh If, ElseIf hoặc Do While để kiểm soát đoạn mã nào được thực thi.
  • 🔤 Văn bản và ngày tháng: Chuỗi ký tự được so sánh từng ký tự một, còn ngày tháng được so sánh như số sê-ri.
  • ⚠️ Bẫy chính xác: Hai Double Các giá trị trông giống hệt nhau vẫn có thể không đạt phép thử bằng nhau, vì vậy hãy so sánh hiệu số đã làm tròn.

So sánh VBA Operaxoắn

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

bằng Operator

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

Câu Hỏi Thường Gặp

Không. VBA đánh giá phép so sánh đầu tiên là Đúng hoặc Sai, sau đó so sánh kết quả đó với 10, điều này sẽ cho ra kết quả sai lệch. Hãy viết hai phép kiểm tra riêng biệt và kết hợp chúng bằng toán tử AND.

Toán tử `like` so sánh một chuỗi với một mẫu chứ không phải một giá trị chính xác. Ký tự đại diện bao gồm dấu hoa thị cho bất kỳ ký tự nào và dấu chấm hỏi cho một ký tự, ví dụ: “Guru99” Giống như “Guru*” trả về True.

Hãy sử dụng toán tử Is, như trong câu lệnh If ws Is Nothing Then. Dấu bằng so sánh các giá trị, trong khi Is kiểm tra xem hai biến đối tượng có trỏ đến cùng một đối tượng hay không, đây là phép thử hợp lệ duy nhất đối với các đối tượng.

Vâng. Hãy mô tả quy tắc bằng ngôn từ đơn giản, ví dụ như gắn cờ bất kỳ đơn hàng nào trên 500 được đặt trước ngày hôm nay, và trợ lý AI sẽ trả về điều kiện If phù hợp. Kiểm tra các giá trị giới hạn trước khi tin tưởng nó.

Vâng. Dán khối lệnh If và trợ lý AI vào. tracHãy tìm nhánh nào bắt từng giá trị, sau đó chỉ ra một ElseIf không thể truy cập hoặc một phép so sánh giữa văn bản và số. Xác nhận cách khắc phục từng bước.ping thông qua mã nguồn.

Tóm tắt bài viết này với: