Khi nào thì mình mới truy cập đến thuôc tính .value của đối tượng, khi nào không?
trong câu lênhj dứoi đây thì không
Private Sub tb_MucLuong_Change()
tb_MucLuong = Format(tb_MucLuong, "#,##0")
If tb_NgayCong <> "" And tb_MucLuong <> "" Then
tb_TienLuong = tb_NgayCong * tb_MucLuong
End If
End Sub
trong khi đó câu lệnh này thì lại phải có:
Private Sub cmb_Luu_Click()
'Tim dong cuoi trong bang du lieu can luu
Dim DongCuoi As Long
DongCuoi = Sheet1.Range("E" & Rows.Count).End(xlUp).Row
'Luu tung noi dung tuong ung theo cot
With Sheet1
.Range("E" & DongCuoi + 1).Value = tb_HoTen.Value
.....
.Range("J" & DongCuoi + 1).Value = CLng(Me.tb_TienLuong.Value)
End With
'Lam moi noi dung cua userform
Unload Me 'Dong lai
uf_ThemNhanVien.Show 'Mo len
End Sub
Thuộc tính .value là để làm rõ hơn thứ mình muốn lấy của đối tượng (là giá trị).
Thông thường khi không nhắc tới nó thì VBA vẫn hiểu là bạn lấy giá trị (quy ước ngầm hiểu của VBA)
.Range("E" & DongCuoi + 1).Value = tb_HoTen.Value
.Range("E" & DongCuoi + 1)= tb_HoTen
Nó chỉ khác biệt khi bạn chọn phương thức khác không phải .value như .text, .value2
.Text sẽ lấy những gì hiển thị trong đối tượng (chứ không phải bản chất giá trị của nó)
.Value2 sẽ lấy ra bản chất của thứ đang có trong đối tượng (có thể là giá trị rỗng, lỗi hoặc TRUE/FALSE). Nó hoạt động ngay cả khi đối tượng có hoặc không có nội dung gì.
Còn .Value là giá trị của dữ liệu với bản chất thông thường mà VBA hiểu được. Chỉ khi có dữ liệu thì .Value mới có ý nghĩa.
Thường thì khi viết code cơ bản chỉ dùng .value thôi, ít khi dùng .text hay .value2. Hai trường hợp này chỉ dùng trong một số mục đích rõ ràng, hiếm gặp.
Bạn hiểu đơn giản: .value là phổ biến nhất, viết hay không viết nó thì VBA vẫn hiểu được và đều quy định là phương thức .value