Em xin hỏi có hàm nào tương tự để kiểm tra font chữ trong một Cell là VNI?
Nếu đúng trả về TRUE & sai trả về FALSE?
Cách đơn giản là kiểm tra Font Name (Left(rCel.Font.Name, 3) ="VNI" chẳng hạn)
Tuy nhiên đây cũng không phải là cách chính xác, vì nếu người ta gõ bằng mã VNI nhưng lại cố tình đổi sang font chữ Arial thì sao?
Ý Anh người ta gõ vào A1 bằng mã VNI, nhưng lại Format cell A1 với font là Arial? Lúc này công thức trên không kiểm tra ra được?gõ bằng mã VNI nhưng lại cố tình đổi sang font chữ Arial thì sao
rCel là 1 đối số hàm của bạn đấyAnh NDU cho em hỏi rCel là gì vậy? em phải check thêm mục nào mới dùng được rCel?
Function CheckVNIFont(ByVal rCel As Range) As Boolean
Application.Volatile
CheckVNIFont = (Left(rCel.Font.Name, 3) = "VNI")
End Function
Kiểm tra bảng mã uh? THUA (ít nhất là THUA với trình độ của tôi) ---> Thử nghĩ ký tự "a" gõ bằng mã Unicode so với ký tự "a" gõ bằng mã VNI có khác gì nhau?Ý Anh người ta gõ vào A1 bằng mã VNI, nhưng lại Format cell A1 với font là Arial? Lúc này công thức trên không kiểm tra ra được?
Ý em muốn kiểm tra được text gõ vào A1 có phải gõ bằng mã VNI ko Anh NDU ạh?
Function isVni(vnRange As Range) As Boolean
Dim vnStr As String, i As Integer, OneStr As String
vnStr = vnRange.Text
For i = 1 To Len(vnStr) - 1
OneStr = Mid(vnStr, i, 1)
If OneStr = "ù" Or OneStr = "ø" Or OneStr = "û" Or OneStr = "õ" Or _
OneStr = "ï" Or OneStr = "ê" Or OneStr = "é" Or OneStr = "è" Or _
OneStr = "ú" Or OneStr = "ü" Or OneStr = "ë" Or OneStr = "â" Or _
OneStr = "á" Or OneStr = "à" Or OneStr = "å" Or OneStr = "ã" Or _
OneStr = "ä" Or OneStr = "Ù" Or OneStr = "Ø" Or OneStr = "Û" Or _
OneStr = "Õ" Or OneStr = "Ï" Or OneStr = "Ê" Or OneStr = "É" Or _
OneStr = "È" Or OneStr = "Ú" Or OneStr = "Ü" Or OneStr = "Ë" Or _
OneStr = "Â" Or OneStr = "Á" Or OneStr = "À" Or OneStr = "Å" Or _
OneStr = "Ã" Or OneStr = "Ä" Then
isVni = True
Exit Function
Else
isVni = False
End If
Next
End Function
rCel là 1 đối số hàm của bạn đấy
Ví dụ:
PHP:Function CheckVNIFont(ByVal rCel As Range) As Boolean Application.Volatile CheckVNIFont = (Left(rCel.Font.Name, 3) = "VNI") End Function
Kiểm tra bảng mã uh? THUA (ít nhất là THUA với trình độ của tôi) ---> Thử nghĩ ký tự "a" gõ bằng mã Unicode so với ký tự "a" gõ bằng mã VNI có khác gì nhau?
?activecell.Font.name
Arial
?activecell.Font.Parent
oâ
?activecell.Value
oâ
rCel là 1 đối số hàm của bạn đấy
Ví dụ:
PHP:Function CheckVNIFont(ByVal rCel As Range) As Boolean Application.Volatile CheckVNIFont = (Left(rCel.Font.Name, 3) = "VNI") End Function
Kiểm tra bảng mã uh? THUA (ít nhất là THUA với trình độ của tôi) ---> Thử nghĩ ký tự "a" gõ bằng mã Unicode so với ký tự "a" gõ bằng mã VNI có khác gì nhau?
?activecell.Font.name
Arial
?activecell.Font.Parent
oâ
?activecell.Value
oâ
Cái này nói hoài rồi!Em hỏi thêm một chút 02 thuộc tính sau đây khác gì nhau
Ví dụ: cell A1 em gõ bằng Mã VNI, format format
PHP:?activecell.Font.name Arial ?activecell.Font.Parent oâ ?activecell.Value oâ
Cho em hỏi thuộc tính Font.parent & .value có gì khác nhau?
Bạn thử cái này xem sao? Để làm việc tốt hơn có lẽ bổ sung thêm 2 hoặc 3 lần kiểm tra nữa vì một số ký tự vẫn bị trùng với bảng mã khác.
Function isVni(vnRange As Range) As Boolean
Dim vnStr As String, i As Integer, OneStr As String
vnStr = vnRange.Text
For i = 1 To Len(vnStr) - 1
OneStr = Mid(vnStr, i, 1)
If OneStr = "ù" Or OneStr = "ø" Or OneStr = "û" Or OneStr = "õ" Or _
OneStr = "ï" Or OneStr = "ê" Or OneStr = "é" Or OneStr = "è" Or _
OneStr = "ú" Or OneStr = "ü" Or OneStr = "ë" Or OneStr = "â" Or _
OneStr = "á" Or OneStr = "à" Or OneStr = "å" Or OneStr = "ã" Or _
OneStr = "ä" Or OneStr = "Ù" Or OneStr = "Ø" Or OneStr = "Û" Or _
OneStr = "Õ" Or OneStr = "Ï" Or OneStr = "Ê" Or OneStr = "É" Or _
OneStr = "È" Or OneStr = "Ú" Or OneStr = "Ü" Or OneStr = "Ë" Or _
OneStr = "Â" Or OneStr = "Á" Or OneStr = "À" Or OneStr = "Å" Or _
OneStr = "Ã" Or OneStr = "Ä" Then
isVni = True
Exit Function
Else
isVni = False
End If
Next
End Function
Tôi đã nói rồi, cần duyệt qua 2-3 chữ nữa thì mới có thể tạm xác định được có phải là Vni hay không. Còn mỗi chữ thế này thì khó đấy
Như đã nói ở trên, có vài ký tự TRÙNG giữa các bảng mã ---> Gặp trường hợp này thì THUA thôiEm gõ ok rồi. Tuy nhiên Cell A4, em gõ bằng Unicode, nó vẫn trả về TRUE a Hướng ơi
Như đã nói ở trên, có vài ký tự TRÙNG giữa các bảng mã ---> Gặp trường hợp này thì THUA thôi
Nói chung là chẳng có phương pháp nào chính xác 100% để nhận diện bảng mã cả
Phần mềm cty em cho phép import dữ liệu từ file excel. Nhưng nếu dòng nào có cell (dạng string) chứa ký tự có dấu không được gõ bởi Mã VNI - thì nó báo lỗi không cho import dữ liệu
Em nghĩ phải có cách nào đó để phát hiện ra string không được gõ bằng mã VNI. (e đang gửi mail cho người viết phần mềm này, ko biết người ta có chia sẻ không?)
Nhưng dù sao thông qua bài này em cũng học hỏi thêm rất nhiều
Cám ơn Anh
Không có bất cứ cách nào chắc ăn 100% đâu
Mà nghĩ cũng lạ! Phần mềm do ai viết thì người đó phải chịu trách nhiệm chứ, tức ai viết phần mềm thì phải "theo" dữ liệu của mình, có đâu bạn phải "theo" người ta
Tôi nghĩ bạn nên đề nghị người ta viết trên nền Unicode thì hơn (VNI cái quỷ gì...)