IIf()
và hàm IIf()
tuyên bố về cơ bản là các loài động vật khác nhau.
Thật không may, chúng gần như không thể phân biệt được. Chưa hết, điều quan trọng là phải làm được như vậy. Tại sao?
Vì hàm IIf () này là lỗi thời gian chạy đang chờ xảy ra:
IIf(Attempts = 0, 0, Successes / Attempts)
Trong khi IIf () câu lệnh này sẽ trả về một giá trị một cách an toàn ngay cả khi Attempts = 0
:
IIf(Attempts = 0, 0, Successes / Attempts)
Vì vậy, bạn có thể nhận ra sự khác biệt giữa hai điều này không?
Nói với họ về sự khác biệt
Nếu bạn không thể phát hiện ra sự khác biệt giữa hai mẫu trên, đó là bởi vì không có sự khác biệt.
IIf()
chức năng trông giống với IIf()
tuyên bố.
Sự khác biệt là ở cách thức – hay chính xác hơn là ở đâu– họ được đánh giá.
- IIf chức năng là một thành viên của thư viện tiêu chuẩn VBA.Interaction.
- IIf tuyên bố được đánh giá bởi Dịch vụ biểu thức của công cụ cơ sở dữ liệu Jet / ACE (acees.dll).
Tôi đã viết về sự khác biệt giữa mã và biểu thức ở đây:
Biểu thức so với Mã Khi nào mã không phải là mã? Khi đó là một biểu thức. Sự khác biệt là gì và ai thực sự quan tâm? Hãy khám phá. Không còn lâu nữa SetMike WolfeSự khác biệt cơ bản giữa hàm IIf () và câu lệnh IIf ()
Ba từ:đánh giá ngắn mạch.
- IIf tuyên bố có nó.
- IIf chức năng không.
Đánh giá ngắn mạch là gì?
Trong đánh giá ngắn mạch, mã chỉ đánh giá những biểu thức cần thiết để xác định kết quả.
Câu lệnh IIf và hàm IIf đều có ba đối số:
- expr: một điều kiện boolean
- truepart: kết quả trả về nếu expr là sự thật
- falsepart: kết quả trả về nếu expr là Sai
Với câu lệnh IIf, chỉ có hai trong số các đối số đó từng được đánh giá: expr và – tùy thuộc vào kết quả của expr– truepart HOẶC phần sai .
Với hàm IIf, cả ba đối số PHẢI được đánh giá trước khi chúng được chuyển đến hàm.
Tại sao lại quan trọng
Hãy quay lại mã ví dụ ban đầu:
IIf(Attempts = 0, 0, Successes / Attempts)
Điều gì xảy ra nếu giá trị của Số nỗ lực bằng 0?
IIf tuyên bố
- expr đánh giá là Đúng.
- truepart đánh giá thành
0
. - Câu lệnh trả về
0
.
IIf function
- expr đánh giá là True.
- truepart đánh giá thành
0
. - Phần sai đánh giá thành # ERROR #:Chia cho 0
Chức năng phiên bản trả về lỗi vì nó buộc phải đánh giá cả truepart và falsepart biểu thức.
IIf ở đâu Được coi như một Tuyên bố?
IIf được đánh giá như một tuyên bố ở những nơi sau:
- Truy vấn
- Thuộc tính biểu mẫu / báo cáo / điều khiển (ví dụ:một TextBox ControlSource)
- Hàm Access Application.Eval ()
Để biết thêm chi tiết – bao gồm cách kiểm tra dứt điểm xem IIf đang được coi là một câu lệnh hoặc một hàm – hãy đọc bài viết của tôi về sự khác biệt giữa các biểu thức và mã: Biểu thức so với Mã .