Nhờ phân biệt 2 thuộc tính .Text và .Value.

Liên hệ QC

ptlong04x1

Thành viên tích cực
Tham gia
15/10/08
Bài viết
1,031
Được thích
1,531
Nghề nghiệp
Kỹ sư xây dựng
Nhờ các bạn chỉ giúp mình sự giống nhaukhác nhau giữa 2 thuộc tính .Text.Value của 1 cell.
 
Bạn muốn biết thì dùng thử code này xem! hi hihi
Mã:
Sub thu()
Set c = Worksheets("Sheet1").Range("B14")
c.Value = 1198.3
c.NumberFormat = "$#,##0_);($#,##0)"
MsgBox c.Value
MsgBox c.Text
End Sub
 
Upvote 0
Bạn muốn biết thì dùng thử code này xem! hi hihi
Mã:
Sub thu()
Set c = Worksheets("Sheet1").Range("B14")
c.Value = 1198.3
c.NumberFormat = "$#,##0_);($#,##0)"
MsgBox c.Value
MsgBox c.Text
End Sub

Nhờ bạn nói thêm vài lời đi, quả thật mình vẫn thấy mơ hồ
 
Upvote 0
Upvote 0
Theo tôi nghĩ thì .Text là cái bạn thấy còn .Value là giá trị thật của nó.
Bạn ví dụ với dữ liệu ngày định dạng theo các kiểu khác nhau thử xem.

Ý mình muốn hỏi trong VBA
Ví dụ :
PHP:
Sub tn()

    Range("A2").Value = Range("A1").Value
    Range("A3").Value = Range("A1").Text

End Sub

Kết quả là :

|
A​
|
1​
|
100​
|
2​
|
100​
|
3​
|
100​
|

Như vậy đâu là sự khác nhau?
 
Upvote 0
Ý mình muốn hỏi trong VBA
Ví dụ :
PHP:
Sub tn()

    Range("A2").Value = Range("A1").Value
    Range("A3").Value = Range("A1").Text

End Sub
Kết quả là :

|
A​
|
1​
|
100​
|
2​
|
100​
|
3​
|
100​
|
Như vậy đâu là sự khác nhau?
Thì mình cũng nói trong VBA mà
Nhưng đâu phải trường hợp nào .Text và .Value cũng khác nhau đâu.
Bạn xem file ví dụ này
 

File đính kèm

Upvote 0
Ở đây bạn dùng thuộc tính .Value rồi thì làm gì có khác biệt chứ. Nhưng lệnh .Text không áp dụng cho định dạng Font chữ đâu. Nó hình như chỉ áp dụng cho định dạng kiểu dữ liệu thôi. Như định dạng ngày tháng, và định dạng số. Và hình như nó chấp nhận tất cả các thuộc tính nằm trong mục Custom của Format Cells...

Mã:
[COLOR=#000000][COLOR=#0000bb][FONT=Courier New]Sub tn[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]()[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A2"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000bb][SIZE=4][COLOR=darkgreen][B]Value[/B][/COLOR][/SIZE] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A1"[/COLOR][COLOR=#007700]).[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]   Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A3"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000bb][B][SIZE=4][COLOR=darkgreen]Value[/COLOR][/SIZE][/B] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"A1"[/COLOR][COLOR=#007700]).[/COLOR][/FONT][COLOR=#0000bb][FONT=Courier New]Text[/FONT][/COLOR]
 
[FONT=Courier New][COLOR=#0000bb]End Sub  [/COLOR][/FONT][/COLOR]
Giời chỉnh code là như vầy xem:
Và dùng định dạng trong Custom, thì bạn sẽ thấy khác biệt.
Mã:
[COLOR=#000000][COLOR=#0000bb][FONT=Courier New]Sub tn[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]()[/COLOR][/FONT]
 
[FONT=Courier New][COLOR=#dd0000][A2] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000][A1[/COLOR][COLOR=#007700]].[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT]
[FONT=Courier New][COLOR=#dd0000][A3[/COLOR][COLOR=#0000bb]] [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000][A1[/COLOR][COLOR=#007700]].[/COLOR][/FONT][COLOR=#0000bb][FONT=Courier New]Text[/FONT][/COLOR]
 
[FONT=Courier New][COLOR=#0000bb]End Sub  [/COLOR][/FONT][/COLOR]
Chúc thành công!
 
Upvote 0
Dear all,
-----------

Mình hiểu là các bạn đang thảo luận đến hai thuộc tính của Range

Có lẽ để so sánh hai thuộc tính này các bạn nên lưu ý đến các trường hợp lỗi có thể phát sinh và khả năng sử dụng chúng. Ví dụ:


PHP:
Sub Value_Text()
Range("A1") = "=1/0"
Debug.Print Range("A1").Text
Debug.Print Range("A1").Value
MsgBox Range("A1").Value
End Sub



PHP:
Sub Text_Value()
Range("A1") = "=1/0"
Debug.Print Range("A1").Text
Debug.Print Range("A1").Value
Range("A1").Text = "=1/0"
End Sub

Bạn có thể nhận thấy đôi khi không thể dùng Value - mặc dù là thuộc tính mặc định của Range (Range("A1") = "=1/0" không cần ".Value") khi "giá trị" đó là một lỗi (Error) và cũng không thể sử dụng Text để "điền" số liệu vì thuộc tính này chỉ đọc (Read-Only); Value có kiểu dữ liệu là Variant còn Text có kiểu dữ liệu là String.

Các bạn tham khảo thêm trợ giúp ngữ cảnh bằng phím F1 sẽ rất bổ ích.
 
Upvote 0
Phân biệt Text và Value

Nhờ các bạn chỉ giúp mình sự giống nhaukhác nhau giữa 2 thuộc tính .Text.Value của 1 cell.

Phân biệt hai biến thuộc tính TextValue
(*) Điểm giống nhau:
+ Cùng kiểu Variant

(*) Điểm khác nhau:
+ Text là "Read-Only"/ chỉ đọc; Value cho phép đọc và ghi giá trị
+ Text chỉ trả về giá trị đơn nhất trên một Cell duy nhất; Value vừa trả và nhận giá trị đơn nhất vừa có thể trả và nhận một mảng giá trị trên một hoặc tập hợp của Cell.
Biến = Range("A1:D1").Text ' Trả về Null (không có giá trị)
Biến = Range("A1").Text 'Có giá trị

Range("A1:D1").Value = "Một giá trị hoặc Mảng giá trị"

(Mảng giá trị trong Value là mảng 2 chiều (dòng, cột).)
+ Text luôn trả về giá trị kiểu chuỗi cho dù giá trị trên Cell/ô có thể dạng Number, Date,....; Value trả về giá trị theo kiểu trên Cell của nó, có thể trả về kiểu String, Number, Date,...tùy thuộc vào giá trị thực và định dạng trên Cell.

Ví dụ

Mã:
Option Explicit

Sub TestValues()
    Const ACount = 4
    Dim A(1 To ACount)
    Dim I As Long
    
    For I = 1 To ACount
        A(I) = I
    Next I
    
    Range("A1:D1").Value = A
End Sub

Sub TestGetValuesAndText()
    Dim I As Long
    Dim v As Variant
    Dim lb As Long, ACount As Long
    
    v = Range("A1:D1").Value
    lb = LBound(v, 2)
    ACount = UBound(v, 2)
    For I = lb To ACount
        MsgBox v(1, I)
    Next I
    
End Sub

Sub TestGetText()
    Dim Cell As Range
    
    For Each Cell In Range("A1:D1")
        MsgBox Cell.Text, , Cell.Value
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom