Mục lục:
- Thói quen sau đây thể hiện cấu trúc If-Then mà không có mệnh đề Else tùy chọn:
- Cách tiếp cận khác đối với vấn đề trước đó sử dụng mệnh đề Else. Đây là một thủ tục được recoded để sử dụng cấu trúc If-Then-Else:
- Đây là cách bạn có thể viết lại các thói quen GreetMe bằng cách sử dụng cú pháp sau:
- Lưu ý rằng mỗi câu lệnh If-Then trong thói quen này được thực thi, và giá trị Giảm có thể thay đổi khi các câu lệnh được thực thi. Tuy nhiên, trình tự cuối cùng sẽ hiển thị đúng giá trị cho Giảm giá vì các câu lệnh If-Then theo thứ tự tăng dần Giá trị chiết khấu.
Video: Hàm IF - từ cơ bản đến nâng cao 2025
Nếu-Sau đó là cơ cấu kiểm soát quan trọng nhất của VBA. Bạn có thể sử dụng lệnh này trên cơ sở hàng ngày. Sử dụng cấu trúc If-Then khi bạn muốn thực hiện một hoặc nhiều điều kiện có điều kiện. Mệnh đề Else tùy chọn, nếu được bao gồm, cho phép bạn thực hiện một hoặc nhiều lệnh nếu điều kiện bạn đang kiểm tra là không đúng. Dưới đây là một thủ tục CheckUser đơn giản, recoded sử dụng cấu trúc If-Then-Else:
Nếu-Sau đó các ví dụThói quen sau đây thể hiện cấu trúc If-Then mà không có mệnh đề Else tùy chọn:
Sub GreetMe () Nếu Thời gian <0. 5 thì MsgBox" Good Morning "End Sub
Thủ tục GreetMe sử dụng chức năng Thời gian của VBA để có được thời gian hệ thống. Nếu thời gian hiện tại nhỏ hơn. 5, thói quen hiển thị một lời chào thân thiện. Nếu Thời gian lớn hơn hoặc bằng. 5, kết thúc thường lệ, và không có gì xảy ra.
Sub GreetMe2 () Nếu Time = 0. 5 MsgBox "Good Afternoon" End Sub
Lưu ý rằng> = (lớn hơn hoặc bằng) được sử dụng cho câu lệnh If-Then thứ hai. Điều này đảm bảo rằng cả ngày được bảo hiểm. Đã> lớn hơn> được sử dụng, không có thông báo sẽ xuất hiện nếu thủ tục này đã được thực hiện chính xác vào lúc 12 giờ trưa. Đó là khá khó, nhưng với một chương trình quan trọng như thế này, bạn không muốn mất bất kỳ cơ hội.
Cách tiếp cận khác đối với vấn đề trước đó sử dụng mệnh đề Else. Đây là một thủ tục được recoded để sử dụng cấu trúc If-Then-Else:
Sub GreetMe3 () Nếu Time <0. 5 thì MsgBox "Good Morning" Else _ MsgBox "Good Afternoon" End Sub
Chú ý rằng dòng ký tự tiếp tục (gạch dưới) được sử dụng trong ví dụ trước. Câu lệnh If-Then-Else thật sự là một tuyên bố. VBA cung cấp một cách khác hơi mã hoá các cấu trúc If-Then-Else sử dụng câu lệnh End If. Do đó, thủ tục GreetMe có thể được viết lại như
Nếu bạn cần mở rộng thói quen GreetMe để xử lý ba điều kiện: buổi sáng, buổi chiều và buổi tối thì sao? Bạn có hai lựa chọn: Sử dụng ba câu lệnh If-Then hoặc sử dụng cấu trúc
lồng nhau
Nếu-Then-Else.
Ngang có nghĩa là đặt cấu trúc If-Then-Else trong cấu trúc If-Then-Else khác. Cách tiếp cận thứ nhất sử dụng ba câu lệnh If-Then đơn giản hơn: Sub GreetMe5 () Dim Msg As String If Time = 0. 5 Và Time = 0. 75 Sau đó Msg = "Evening" MsgBox "Good" & Msg End Sub Một bước xoắn mới đã được thêm vào với việc sử dụng một biến. Biến Msg nhận một giá trị văn bản khác, tùy thuộc vào thời gian trong ngày. Câu lệnh MsgBox hiển thị lời chào: Good Morning, Good Afternoon, hoặc Good Evening. Thủ tục sau đây thực hiện cùng một hành động nhưng sử dụng cấu trúc if-then-end If:
Sub GreetMe6 () Dim Msg As String If Time = 0. 5 Và Time = 0. 75 Then Msg = "Evening" End If MsgBox "Good" & Msg End Sub
Sử dụng ElseIf
Trong các ví dụ trước, mọi câu lệnh trong thói quen đều được thực hiện. Một cấu trúc hiệu quả hơn sẽ thoát khỏi thói quen ngay khi có một điều kiện được tìm thấy là đúng. Vào buổi sáng, ví dụ, thủ tục nên hiển thị thông báo Good Morning và sau đó thoát ra - mà không đánh giá các điều kiện khác không cần thiết.
Với một thói quen nhỏ như thế này, bạn không phải lo lắng về tốc độ thực hiện. Nhưng đối với các ứng dụng lớn hơn, trong đó tốc độ là rất quan trọng, bạn nên biết về một cú pháp khác cho cấu trúc If-Then.
Đây là cách bạn có thể viết lại các thói quen GreetMe bằng cách sử dụng cú pháp sau:
Sub GreetMe7 () Dim Msg Như String If Time = 0. 5 Và Thời gian <0. 75 sau đó Msg = "Afternoon" Else Msg = "Evening "End If MsgBox" Good "& Msg End Sub
Khi một điều kiện là đúng, VBA thực hiện các câu lệnh có điều kiện và cấu trúc If kết thúc. Nói cách khác, thủ tục này hiệu quả hơn một chút so với các ví dụ trước. Thương mại-off là mã khó hiểu hơn.
Ví dụ If-Then khác
Đây là một ví dụ khác sử dụng mẫu đơn giản của cấu trúc If-Then. Thủ tục này nhắc nhở người dùng về một số lượng và sau đó hiển thị mức chiết khấu thích hợp, dựa trên số lượng người dùng nhập:
Sub ShowDiscount () Số lượng Dim Suy giảm Dài Như Số lượng Đôi = InputBox ("Nhập Số lượng:") Nếu Số lượng > 0 Sau đó Giảm = 0. 1 Nếu Số lượng> 25 Sau đó Giảm = 0. 15 Nếu Số lượng> = 50 Sau đó Giảm = 0. 2 Nếu Số lượng> = 75 Sau đó Giảm = 0 25 MsgBox "Giảm giá:" và Giảm Cuối Sub
Lưu ý rằng mỗi câu lệnh If-Then trong thói quen này được thực thi, và giá trị Giảm có thể thay đổi khi các câu lệnh được thực thi. Tuy nhiên, trình tự cuối cùng sẽ hiển thị đúng giá trị cho Giảm giá vì các câu lệnh If-Then theo thứ tự tăng dần Giá trị chiết khấu.
Các thủ tục sau đây thực hiện các tác vụ tương tự bằng cách sử dụng cú pháp ElseIf thay thế. Trong trường hợp này, thủ tục kết thúc ngay lập tức sau khi thực hiện các câu lệnh cho một điều kiện thật sự:
Sub ShowDiscount2 () Dim Số lượng Giảm giá dài Như đôi Số lượng = InputBox ("Nhập Số lượng:") Nếu Số lượng> 0 Và Số lượng <25 sau đó Giảm giá = 0.1 Giảm Số lượng> = 25 Và Số lượng <50 sau đó Giảm giá = 0. 15 Số ElseIf> = 50 Và Số lượng <75 sau đó Giảm giá = 0. 2 Số ElseIf = 75 Sau đó Giảm giá = 0. 25 Cuối Nếu MsgBox "Giảm giá:" & Giảm Cuối Sub
Những cấu trúc Nếu-Sau đó thì khá rườm rà. Bạn có thể muốn sử dụng cấu trúc If-Then chỉ cho các quyết định nhị phân đơn giản.