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

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é.

Cú pháp VBA sử dụng thuộc tính của Range / Cell

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:

  • Gán vào ô C3 giá trị dựa theo giá trị ô A3 theo thuộc tính .Value của ô A3
  • Gán vào ô D3 giá trị dựa theo giá trị ô A3 theo thuộc tính .Value2 của ô A3
  • Gán vào ô E3 giá trị dựa theo giá trị ô A3 theo thuộc tính .Text của ô A3

Cú pháp như sau:

Phân biệt sự khác nhau giữa các thuộc tính Text, Value và Value2

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à:

  • A4: Dạng dữ liệu Ngày giờ
  • A5: Dạng dữ liệu có ký hiệu tiền tệ
  • A6: Dạng dữ liệu có ký hiệu phần trăm

Chúng ta thấy xuất hiện sự khác nhau:

  • Với dữ liệu là Ngày giờ, Value2 sẽ cho chúng ta dữ liệu là dạng General của con số đó (ô D4), Text sẽ cho dữ liệu là dạng văn bản chứ không phải dạng số (có thể thấy nội dung lệch về bên trái (E4) chứ không phải bên phải như dạng Value (C4)
  • Với dữ liệu dạng Currency, ở dạng Value2 chỉ cho ta con số không có ký hiệu dấu $
  • Với dữ liệu dạng %, ở dạng Text vẫn giữ nguyên ký hiệu %, trong khi Value và Value2 thì trở về dạng số đã chia cho 100 và không còn dấu %

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)

Kết luận

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


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản