phan_huythai
Thành viên chính thức


- Tham gia
- 15/9/12
- Bài viết
- 60
- Được thích
- 1
Ngồi ngâm cứu Code dhn46 bài #18 thấy có 1 số điểm cần sửa
1 - Khi đã kiểm tra Hasfomula thì không cần Pattern số 1 => bỏ Pattern số 1 + lấy chuỗi s không có ký tự "="
2 - Thay Pattern số 2 do không hiển thị được thập phân, dấu ngăn cách thập phân là dấu thập phân của phép tính
Code của bác thanhlanh chuyển hết dấu "." thành dấu ","
Code mới sẽ là:
Mã:Sub Ct() Dim i As Long, k As Long, s As String, Arr For Each cell In Selection.Cells If cell.HasFormula Then s = Right(cell.Formula, Len(cell.Formula) - 1) With CreateObject("vbscript.regexp") .Global = True s = .Replace(s, "") .Pattern = "\^-*(\d|[a-zA-Z])*((\.|,)*(\d|[a-zA-Z])*)*" ReDim Arr(1 To .Execute(s).Count, 1 To 2) For Each Match In .Execute(s) s = Replace(s, Match, Right(Match, Len(Match) - 1)) k = k + 1 Arr(k, 1) = Match.FirstIndex - k + 2 Arr(k, 2) = Len(Match) - 1 Next End With cell.Offset(, 1) = s For i = 1 To UBound(Arr) cell.Offset(, 1).Characters(Arr(i, 1), Arr(i, 2)).Font.Superscript = True Next End If k = 0 Next End Sub
Bạn ứng dụng rất hay về VBscript, nhưng nhìn cái Pattern thấy tùm lum. Bạn có thể diễn nôm từng ký tự trong nó giùm. Cảm ơn.
----------------------
Mình chuyển sang dấu phẩy hết là theo ý mình, ai không thích thì bỏ câu lệnh đó di.
dhn46 xin giải thích theo suy nghĩ của mình:.Pattern = "\^-*(\d|[a-zA-Z])*((\.|,)*(\d|[a-zA-Z])*)*"