EM chào Anh/Chị ạ, em muốn hỏi về Code Select Case như sau:
Code của em hiện tại chạy được là:
Thực tế các trường hợp như "A0014", "B"0014", "A144" v.v. vài tháng đổi ngày một lần nên sửa code lại hơi mất thời gian.
Ví dụ tháng 5: Case "A0014" ==> sang tháng 6 thành Case "A0014","G057"
Vậy em muốn hỏi là có thể thiết lập các giá trị mỗi "Case" bằng 1 biến đại diện được không ạ? nếu được thì xin giúp em với ạ?
- Tại Cột A em sẽ điền các giá trị như: A0014, B0014 v.v.
- Và tại Cột B em điền các giá trị tương ứng như: 7, 12 v.v
==> Khi có thay đổi em chỉ cần sửa giá trị cột B tương ứng, không phải vào sửa code.
Kết quả em muốn na ná thế này ạ:
Code của em hiện tại chạy được là:
Mã:
Function GetDayOff(ByVal sCurrentMonth As String, ByVal sReportCode As String) As Long
Dim LastDayOfMonth As Long
LastDayOfMonth = DateSerial(CLng(Left(sCurrentMonth, 4)), CLng(Right(sCurrentMonth, 2)) + 1, 0)
Select Case sReportCode
Case "A0014"
GetDayOff = LastDayOfMonth + 7
Case "B0014", "B0024", "B0034"
GetDayOff = LastDayOfMonth + 12
Case "A144", "C156", "D254"
GetDayOff = LastDayOfMonth + 13
Case "G004", "G008", "G036"
GetDayOff = LastDayOfMonth + 25
Case "G057", "G037", "G035", "G077"
GetDayOff = LastDayOfMonth + 90
Case Else
GetDayOff = LastDayOfMonth + 15
End Select
End Function
Thực tế các trường hợp như "A0014", "B"0014", "A144" v.v. vài tháng đổi ngày một lần nên sửa code lại hơi mất thời gian.
Ví dụ tháng 5: Case "A0014" ==> sang tháng 6 thành Case "A0014","G057"
Vậy em muốn hỏi là có thể thiết lập các giá trị mỗi "Case" bằng 1 biến đại diện được không ạ? nếu được thì xin giúp em với ạ?
- Tại Cột A em sẽ điền các giá trị như: A0014, B0014 v.v.
- Và tại Cột B em điền các giá trị tương ứng như: 7, 12 v.v
==> Khi có thay đổi em chỉ cần sửa giá trị cột B tương ứng, không phải vào sửa code.
Kết quả em muốn na ná thế này ạ:
Mã:
Set a = range("A2", Range("A" & Rows.Count).End(xlUp)).Find(range(B2", Range("A" & Rows.Count).End(xlUp),"07")
Set b = range("A2", Range("A" & Rows.Count).End(xlUp)).Find(range(B2", Range("A" & Rows.Count).End(xlUp),"12")
Set c = range("A2", Range("A" & Rows.Count).End(xlUp)).Find(range(B2", Range("A" & Rows.Count).End(xlUp),"13")
Set d = range("A2", Range("A" & Rows.Count).End(xlUp)).Find(range(B2", Range("A" & Rows.Count).End(xlUp),"25")
Set e = range("A2", Range("A" & Rows.Count).End(xlUp)).Find(range(B2", Range("A" & Rows.Count).End(xlUp),"90")
Select Case sReportCode
Case a
GetDayOff = LastDayOfMonth + 7
Case b
GetDayOff = LastDayOfMonth + 12
Case c
GetDayOff = LastDayOfMonth + 13
Case d
GetDayOff = LastDayOfMonth + 25
Case e
GetDayOff = LastDayOfMonth + 90
Case Else
GetDayOff = LastDayOfMonth + 15
End Select