[VBA Excel] Cách sử dụng mệnh đề Select Case – End Select

Select Case trong VBA Excel được sử dụng để thực thi khối lệnh theo nhánh điều kiện. Nếu nhánh điều kiện nào đúng thì lệnh sẽ thực thi trong nhánh đó và thoát.

Về cách thực thi, Select Case cũng khá giống với hàm IF. Nhưng trong nhiều trường hợp, Select Case giúp đoạn lệnh của bạn ngắn gọn dễ đọc, dễ chỉnh sửa và cho tốc độ xử lý nhanh hơn.

Cách sử dụng hàm Select Case trong VBA Excel

Để rõ về cách sử dụng Select Case dưới đây là cú pháp và ví dụ về các trường hợp mà bạn có thể áp dụng Select Case khi sử dụng VBA Excel.

Cú pháp Select Case

Select Case có thể thực hiện kiểm tra biến theo kiểu chuỗi hoặc kiểu số. Nhưng thông thường chúng ta hay sử dụng kiểm tra biến dữ liệu là số:

Dim giatri As Integer
Select Case giatri 
Case dk_1
[Thực thi khi giatri = dk_1]
Case dk_2
[Thực thi khi giatri = dk_2]
Case dk_3
[Thực thi khi giatri = dk_3]
Case dk_n
[Thực thi khi giatri = dk_n]
Case Else
[Thực thi các trường hợp không được liệt kê]
End Select

Trong đó:

  • Biến giatri là kiểu số (hoặc là chuỗi)
  • Case dk_1, Case dk_2… từng nhánh trường hợp. Nếu giatri bằng với điều kiện nào (dk_1, dk_2…) thì thực thi tại nhánh đó và thoát. Nếu giatri là kiểu chuỗi thì các dk cũng phải để kiểu chuỗi.
  • Case Else: là các trường hợp giá trị không được liệt kê ở phía trên. Có thể bỏ Case Else nếu không muốn thực hiện các trường hợp còn lại.
  • End Select: kết thúc một mệnh đề Select Case.

Ví dụ sử dụng Select Case

Một ví dụ kinh điển vẫn hay được gặp là kiểm tra tháng nhập vào có bao nhiêu ngày.

Phân tích: Như bạn biết tháng nào có 31 ngày, 30 ngày rồi và riêng tháng 2 sẽ có 28 hoặc 29 ngày. Vậy bạn có thể sử dụng Inputbox để nhập vào 1 tháng, sau đó kiểm tra và đưa ra kết quả tháng đó có bao nhiều ngày.

Sub thang_co_bao_nhieu_ngay()
Dim thang As Integer
thang = InputBox("Nhap thang", "Nhap thang (1->12", 0)
If thang > 0 And thang < 13 Then
Select Case thang
Case 1
MsgBox "Thang " & thang & " co 31 ngày"
Case 2
MsgBox "Thang " & thang & " co 28 hoặc 29 ngày"
Case 3
MsgBox "Thang " & thang & " co 31 ngày"
Case 4
MsgBox "Thang " & thang & " co 30 ngày"
Case 5
MsgBox "Thang " & thang & " co 31 ngày"
Case 6
MsgBox "Thang " & thang & " co 30 ngày"
Case 7
MsgBox "Thang " & thang & " co 31 ngày"
Case 8
MsgBox "Thang " & thang & " co 31 ngày"
Case 9
MsgBox "Thang " & thang & " co 30 ngày"
Case 10
MsgBox "Thang " & thang & " co 31 ngày"
Case 11
MsgBox "Thang " & thang & " co 30 ngày"
Case 12
MsgBox "Thang " & thang & " co 31 ngày"
End Select
Else
MsgBox "So ban vua nhap khong phai thang"
End If
End Sub

Nhóm nhánh Case nếu cùng thực thi khối lệnh như nhau.

Như bạn thấy trong ví dụ trên, nếu có 12 tháng thì phải có 12 Case. Tuy nhiên, các tháng như 1, 3, 5, 7… có 31 ngày; còn các tháng 4, 6, 9, 11 có 30 ngày. Vậy để đơn giản hơn bạn có thể nhóm các trường hợp lại chung 1 Case như sau.

Select Case thang
Case 1, 3, 5, 7, 8, 10, 12
MsgBox "Thang " & thang & " co 31 ngày"
Case 2
MsgBox "Thang " & thang & " co 28 hoặc 29 ngày"
Case 4, 6, 9, 11
MsgBox "Thang " & thang & " co 30 ngày"
End Select

Hoặc nếu bạn muốn nhóm Case theo khoảng giá trị theo thứ tự:

Select Case thang
Case 1 to 4
MsgBox "4 thang dau nam"
Case 5 to 8
MsgBox "4 thang giua nam"
Case 9 to 12
MsgBox "4 thang cuoi nam"
End Select

Hoặc chỉ khai báo các Case muốn kiểm tra:

Select Case thang
Case 1
MsgBox "Thang vua nhap la thang Gieng"
Case 12
MsgBox "Thang vua nhap la thang Chap"
End Select

Hoặc sử dụng so sánh lớn hơn hoặc nhỏ hơn.

Select Case i
Case Is > 8
MsgBox "4 thang cuoi nam"
Case Is < 5
MsgBox "4 thang dau nam"
End Select

Tham khảo thêm về trường hợp sử dụng Case Else tại đây (docs.microsoft.com).

Khi nào sử dụng hàm Select Case thay vì sử dụng hàm If?

Qua ví dụ trên, thì bạn đều có thể sử dụng được hàm IF để thực hiện. Nhưng bạn có thể thấy ở cách nhóm thì Select Case đơn giản và dễ thực hiện hơn IF đúng không nào? Vậy bạn nên sử dụng Select Case trong 1 số trường hợp như sau:

  • Chỉ kiểm tra 1 biến giá trị với nhiều điều kiện khác nhau.
  • Nhiều điều kiện rời rạc nhưng so sánh với 1 biến cố định và có thể nhóm được.
  • Biến kiểm tra đơn giản, không cần xử lý. Còn IF sẽ sử dụng cho các câu điều kiện phức tạp hơn.
  • Cần lệnh dễ đọc và chỉnh sửa.

Như vậy, bạn đã vừa tìm hiểu xong cách sử dụng Select Case trong VBA Excel rồi. Bạn có thể tham khảo các bài viết về VBA trên ChiTietCach.Com tại đây.

BÌNH LUẬN

Please enter your comment!
Please enter your name here