B
bvtvba
Guest
Đôi khi có những biến số được sử dụng liên tục, và có thể sử dụng ở bất cứ đâu, lúc đó các bạn có thể nghĩ tới Enum.
Giả sử như bây giờ mình thực hiện công việc sau:
Nếu nhìn vào đây thì hơi khó hiểu, nếu quan sát Excel, bạn sẽ hình dung ra được là mình đang làm việc trên cột dữ liệu nào. Chúng mình sẽ hiểu được là đang làm việc với cột A, cột B, cột C.
Nếu số lượng cột dữ liệu tăng nhiều hơn, như 10 cột dữ liệu chẳng hạn, khi đó phải tưởng tượng mình đang làm việc với cột dữ liệu nào thật là phiền phức.
Tuy nhiên nếu sử dụng khai báo Enum, việc này lại trở nên dễ dàng hơn.
Ở trên, No, Name, GoodLang là tiêu đề các cột dữ liệu. Ví vậy mình đặt tên biến Enum là các tên này luôn, khi code sẽ thuận tiện hình dung hơn.
Như vậy khi phải làm việc với hàng dữ liệu nào, hay cột dữ liệu nào, chúng ta có thể sử dụng tiêu đề các hàng (cột) dữ liệu này làm tên biến Enum, khi đó code sẽ thuận tiện và dễ hiểu hơn. Người đọc code cũng sẽ cảm thấy dễ hiểu hơn.
Làm việc với số thì như trên, nhưng khi làm việc với ký tự thì Enum không hỗ trợ được, khi đó chúng ta lại phải dùng Dictionary:
Ở đây chỉ là một đoạn code ví dụ đơn giản nhất:
Kết quả:
Để làm rõ hơn hiệu quả của những kiến thức trên, cần có thêm nhiều ví dụ để mọi người dễ hình dung. Mình sẽ sưu tập và sẽ bổ sung thường xuyên vào topic này.
Giả sử như bây giờ mình thực hiện công việc sau:
Mã:
Cells(5,1).Value = 4
Cells(5,2).Value = "tuhocvba.net"
Cells(5,3).Value = "VBA"
Nếu số lượng cột dữ liệu tăng nhiều hơn, như 10 cột dữ liệu chẳng hạn, khi đó phải tưởng tượng mình đang làm việc với cột dữ liệu nào thật là phiền phức.
Tuy nhiên nếu sử dụng khai báo Enum, việc này lại trở nên dễ dàng hơn.
Mã:
Enum enmColumnsNo
No = 1
Name = 2
GoodLang = 3
End Enum
Sub Test()
Cells(5,enmColumnsNo.No).Value = 4
Cells(5,enmColumnsNo.Name).Value = "tuhocvba.net"
Cells(5,enmColumnsNo.GoodLang).Value = "VBA"
End Sub
Như vậy khi phải làm việc với hàng dữ liệu nào, hay cột dữ liệu nào, chúng ta có thể sử dụng tiêu đề các hàng (cột) dữ liệu này làm tên biến Enum, khi đó code sẽ thuận tiện và dễ hiểu hơn. Người đọc code cũng sẽ cảm thấy dễ hiểu hơn.
Làm việc với số thì như trên, nhưng khi làm việc với ký tự thì Enum không hỗ trợ được, khi đó chúng ta lại phải dùng Dictionary:
Ở đây chỉ là một đoạn code ví dụ đơn giản nhất:
Mã:
Sub Test()
'Khai bao Dictionary
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
'Nap gia tri cho Dictionary
myDic.Add "No", "No"
myDic.Add "Name", "Ten"
myDic.Add "GoodLang", "NgonNgu"
Debug.Print "No la:" & myDic.Item("No")
Debug.Print "Name la:" & myDic.Item("Name")
Debug.Print "GoodLang la:" & myDic.Item("GoodLang")
End Sub
Mã:
No la:No
Name la:Ten
GoodLang la:NgonNgu