hung2412
Thành viên tích cực


- Tham gia
- 5/8/08
- Bài viết
- 929
- Được thích
- 240
- Giới tính
- Nam
="="&SUBSTITUTE(B4,"ChrW$","UNICHAR")
Function GPE(ByVal sStr As String) As String
Dim Arr As Variant, i As Long
Arr = Split(sStr, "&")
For i = LBound(Arr, 1) To UBound(Arr)
If (Len(Arr(i)) - Len(Replace(Arr(i), """", ""))) Mod 2 = 1 Then
Arr(i + 1) = Arr(i) & "&" & Arr(i + 1)
Arr(i) = ""
ElseIf Left(Arr(i), 5) = "ChrW$" Then
Arr(i) = ChrW$(CLng(Mid(Arr(i), 7, Len(Arr(i)) - 7)))
Else
Arr(i) = Replace(Arr(i), """""", """")
Arr(i) = Mid(Arr(i), 2, Len(Arr(i)) - 2)
End If
Next
GPE = Join(Arr, "")
End Function
Function ChuyenFont(ByVal S As String) As String
Dim v As Variant
For Each v In Split(Replace(S, """", ""), "&")
If Left(v, 5) = "ChrW$" Then v = ChrW(Val(Mid(v, 7)))
ChuyenFont = ChuyenFont & v
Next
End Function
Function ChrW(I As Long) As String
ChrW = Application.WorksheetFunction.Unichar(i)
'ChrW = VBA.ChrW(i)
End Function
Function Code2Str(Str As String) As String
Code2Str = Application.Evaluate(Str)
End Function
Code của tôi ban sửa ChrW$ thành VBA.ChrW$Em có áp dụng các UDF ở các bài 3, 4, 5 nhưng kết quả là #Value! (tại các cột E, F, G trong file đính kèm của em), em không biết mình áp dụng bị sai chỗ nào, nhờ các anh hướng dẫn
Em cảm ơn!
Em đã sửa trong code của anh, nhưng nó cũng chưa ra kết quả mà nó ra ... (anh xem cột E)Em cảm ơnCode của tôi ban sửa ChrW$ thành VBA.ChrW$
Bạn copy code đã sửa lên tôi xem thử.Em đã sửa trong code của anh, nhưng nó cũng chưa ra kết quả mà nó ra ... (anh xem cột E)Em cảm ơn
Đây anhBạn copy code đã sửa lên tôi xem thử.
Function GPE(ByVal sStr As String) As String
Dim Arr As Variant, i As Long
Arr = Split(sStr, "&")
For i = LBound(Arr, 1) To UBound(Arr)
If (Len(Arr(i)) - Len(Replace(Arr(i), """", ""))) Mod 2 = 1 Then
Arr(i + 1) = Arr(i) & "&" & Arr(i + 1)
Arr(i) = ""
ElseIf Left(Arr(i), 5) = "VBA.ChrW$" Then
Arr(i) = VBA.ChrW$(CLng(Mid(Arr(i), 7, Len(Arr(i)) - 7)))
Else
Arr(i) = Replace(Arr(i), """""", """")
Arr(i) = Mid(Arr(i), 2, Len(Arr(i)) - 2)
End If
Next
GPE = Join(Arr, "")
End Function
Function GPE(ByVal sStr As String) As String
Dim Arr As Variant, i As Long
Arr = Split(sStr, "&")
For i = LBound(Arr, 1) To UBound(Arr)
If (Len(Arr(i)) - Len(Replace(Arr(i), """", ""))) Mod 2 = 1 Then
Arr(i + 1) = Arr(i) & "&" & Arr(i + 1)
Arr(i) = ""
ElseIf Left(Arr(i), 5) = "ChrW$" Then
Arr(i) = VBA.ChrW$(CLng(Mid(Arr(i), 7, Len(Arr(i)) - 7)))
Else
Arr(i) = Replace(Arr(i), """""", """")
Arr(i) = Mid(Arr(i), 2, Len(Arr(i)) - 2)
End If
Next
GPE = Join(Arr, "")
End Function
Trước đây em có sử dụng UDF "Univba" nàyKhông phải vậy. Mấy chữ trong ngoặc kép thì đừng sửa chứ. Sửa như vầy mới đúng.
Function UniVba(TxtUni As String) As String
If TxtUni = "" Then
UniVba = """"""
Else
TxtUni = TxtUni & " "
If AscW(Left(TxtUni, 1)) < 256 Then UniVba = """"
For n = 1 To Len(TxtUni) - 1
uni1 = Mid(TxtUni, n, 1)
uni2 = AscW(Mid(TxtUni, n + 1, 1))
If AscW(uni1) > 255 And uni2 > 255 Then
UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & "
ElseIf AscW(uni1) > 255 And uni2 < 256 Then
UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & """
ElseIf AscW(uni1) < 256 And uni2 > 255 Then
UniVba = UniVba & uni1 & """ & "
Else
UniVba = UniVba & uni1
End If
Next
If Right(UniVba, 4) = " & """ Then
UniVba = Mid(UniVba, 1, Len(UniVba) - 4)
Else
UniVba = UniVba & """"
End If
End If
End Function
Tốt nhất là viết thế này:Em đã sửa trong code của anh, nhưng nó cũng chưa ra kết quả mà nó ra ... (anh xem cột E)Em cảm ơn
Function Code2Str(Str As String) As String
Str = VBA.Replace(Str, "strings.", "", , , 1)
Str = VBA.Replace(Str, "vba.", "", , , 1)
Str = VBA.Replace(Str, "chrw(", "Unichar(", , , 1)
Str = VBA.Replace(Str, "chrw$(", "Unichar(", , , 1)
Str = VBA.Replace(Str, "chr(", "Unichar(", , , 1)
Str = VBA.Replace(Str, "chr$(", "Unichar(", , , 1)
Code2Str = Application.Evaluate(Str)
End Function
Trước đây em có sử dụng UDF "Univba" này
Nay áp dụng dùng UDF của anh để chuyển ngược lại nhưng vẫn không ra kết quảMã:Function UniVba(TxtUni As String) As String If TxtUni = "" Then UniVba = """""" Else TxtUni = TxtUni & " " If AscW(Left(TxtUni, 1)) < 256 Then UniVba = """" For n = 1 To Len(TxtUni) - 1 uni1 = Mid(TxtUni, n, 1) uni2 = AscW(Mid(TxtUni, n + 1, 1)) If AscW(uni1) > 255 And uni2 > 255 Then UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & " ElseIf AscW(uni1) > 255 And uni2 < 256 Then UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & """ ElseIf AscW(uni1) < 256 And uni2 > 255 Then UniVba = UniVba & uni1 & """ & " Else UniVba = UniVba & uni1 End If Next If Right(UniVba, 4) = " & """ Then UniVba = Mid(UniVba, 1, Len(UniVba) - 4) Else UniVba = UniVba & """" End If End If End Function
Không biết UDF "Univba" này có vấn đề gì không? Em áp dụng ở dòng thú 5 và 6 trong file đính kèm.
P/s: UDF "Univba" cái này không phải do em viết.
Em cảm ơn!
Function GPE(ByVal sStr As String) As String
Dim Arr As Variant, i As Long
Arr = Split(sStr, "&")
For i = LBound(Arr, 1) To UBound(Arr)
If (Len(Arr(i)) - Len(Replace(Arr(i), """", ""))) Mod 2 = 1 Then
Arr(i + 1) = Arr(i) & "&" & Arr(i + 1)
Arr(i) = ""
ElseIf Left(Arr(i), 4) = "ChrW" Then
Arr(i) = ChrW(CLng(Mid(Left(Arr(i), Len(Arr(i)) - 1) , InStr(Arr(i), "(") + 1)))
Else
Arr(i) = Replace(Arr(i), """""", """")
Arr(i) = Mid(Arr(i), 2, Len(Arr(i)) - 2)
End If
Next
GPE = Join(Arr, "")
End Function
Function GPE(ByVal sStr As String) As String
Dim Arr As Variant, i As Long
Arr = Split(sStr, "&")
For i = LBound(Arr, 1) To UBound(Arr)
If (Len(Arr(i)) - Len(Replace(Arr(i), """", ""))) Mod 2 = 1 Then
Arr(i + 1) = Arr(i) & "&" & Arr(i + 1)
Arr(i) = ""
Else
Arr(i) = Trim(Arr(i))
If Left(Trim(Arr(i)), 4) = "ChrW" Then
Arr(i) = ChrW(CLng(Mid(Left(Arr(i), Len(Arr(i)) - 1), InStr(Arr(i), "(") + 1)))
Else
Arr(i) = Mid(Arr(i), 2, Len(Arr(i)) - 2)
Arr(i) = Replace(Arr(i), """""", """")
End If
End If
Next
GPE = Join(Arr, "")
End Function