Khi lập trình với đối tượng ô (Cells) hoặc vùng ô (Range) trong VBA, để lấy nội dung bên trong ô hoặc vùng ô đó, chúng ta có thể sử dụng một trong 3 thuộc tính cơ bản là .Text hoặc .Value hoặc .Value2. Vậy 3 thuộc tính này có gì khác nhau? Ý nghĩa kết quả thu được của từng thuộc tính là gì? Trong bài viết này chúng ta hãy cùng tìm hiểu sự khác nhau giữa các thuộc tính Text Value và Value2 của đối tượng Range trong VBA nhé.
Xem nhanh
Trong bài viết Hướng dẫn cách viết code với đối tượng Range trong VBA Excel chúng ta đã tìm hiểu cách viết code của đối tượng Range trong VBA. Khi muốn gọi thuộc tính của đối tượng nào, ta viết:
[Đối tượng].[Thuộc tính]
Ví dụ:
Gọi thuộc tính .Value của đối tượng là ô A3 trong Sheet1 (của Workbook đang làm việc) ta có cú pháp:
Sheet1.Range(“A3”).Value
Khi muốn gán 1 giá trị vào 1 ô dựa theo nội dung của ô khác, ví dụ Gán vào ô C3 (trong Sheet1 của Workbook đang làm việc) giá trị dựa vào giá trị trong ô A3 (trong Sheet1 của Workbook đang làm việc), ta có cú pháp:
Sheet1.Range(“C3”).Value = Sheet1.Range(“A3”).Value
Xét ví dụ dưới đây:
Yêu cầu:
Cú pháp như sau:
Trong ví dụ trên, chúng ta thấy kết quả của 3 dòng lệnh với 3 thuộc tính đều cho kết quả giống nhau. Vậy khi nào thì nó khác nhau? Hãy cùng phân biệt sự khác nhau thông qua các ví dụ tiếp theo dưới đây:
Khi lặp lại ví dụ trên cho 3 dạng dữ liệu khác, lần lượt là:
Chúng ta thấy xuất hiện sự khác nhau:
Có thể kết luận như sau:
Đặc điểm dữ liệu của thuộc tính .Value
Giữ nguyên, gần như không thay đổi gì so với những gì chúng ta nhìn thấy. Riêng dữ liệu dạng % sẽ được đưa về giá trị số thực giúp tính toán trong lập trình được chính xác hơn.
Đặc điểm dữ liệu của thuộc tính .Value2
Đưa dữ liệu về dạng bản chất gốc ban đầu mà Excel nhận dạng được, đó là dạng General trong Format cells
Đặc điểm dữ liệu của thuộc tính .Text
Dạng này giữ nguyên những gì mà chúng ta nhìn thấy, nhưng có thay đổi về bản chất loại dữ liệu (trong trường hợp dạng dữ liệu gốc là dạng Date)
Như vậy tùy theo từng tình huống cụ thể mà chúng ta lựa chọn sử dụng thuộc tính của Range cho phù hợp.
Khi muốn làm việc liên quan tới nội dung bên trong 1 Range, bạn bắt buộc phải gọi ra thuộc tính của Range đó.
Thông thường khi viết code VBA chúng ta hay sử dụng thuộc tính Value nhiều hơn là Value2 hay Text
Chúc các bạn áp dụng tốt kiến thức này vào việc học và ứng dụng VBA.
Ngoài ra bạn có thể tham khảo thêm một số nội dung thú vị khác về VBA:
Hướng dẫn cách phân biệt ActiveWorkbook với ThisWorkbook khi lập trình VBA Excel
Hướng dẫn phân biệt phương thức Select với Activate của đối tượng Worksheet trong VBA