Em có một loạt công thức đại loại như sau trong file excel:
1365[SUP]+10[/SUP] x 430[SUP]+10[/SUP] x 17
Mỗi một dòng như thế sẽ nằm trong một ô, vấn đề em cần ở đây là làm cách nào để tạo superscript nhanh chứ mỗi lần đánh đơn hàng mất rất nhiều thời gian để tô đen từng cái, rồi vào menu chọn superscript.
Em không rành VBA, nhưng có lên mạng và tìm được đoạn code sau:
Private Const CHAR_SUP As String = "^"
Private Const CHAR_SUB As String = "|"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If IsNumeric(Target.Value) Then Exit Sub
'Look for SUPERSCRIPT character
If InStr(1, Target.Value, CHAR_SUP) > 1 Then
SuperScript Target, InStr(1, Target.Value, CHAR_SUP)
End If
'Look for SUBSCRIPT character
If InStr(1, Target.Value, CHAR_SUB) > 1 Then
SubScript Target, InStr(1, Target.Value, CHAR_SUB)
End If
End Sub
Private Sub SuperScript(ByVal Target As Range, ByVal iPosition As Integer)
Target.Characters(Start:=iPosition + 1, Length:=1).Font.SuperScript = True
Target.Characters(Start:=iPosition, Length:=1).Delete
End Sub
Private Sub SubScript(ByVal Target As Range, ByVal iPosition As Integer)
Target.Characters(Start:=iPosition + 1, Length:=1).Font.SubScript = True
Target.Characters(Start:=iPosition, Length:=1).Delete
End Sub
Đoạn code này sẽ thay:
abcd^efg thành abcd[SUP]e[/SUP]fg
abcd|efg thành abcd[SUB]e[/SUB]fg
Đoạn code này nói chung là nó chạy, nhưng nhược điểm của nó là chỉ có tác dụng cho 1 ký tự/số đầu tiên, xin mọi người chỉ dùm làm cách nào cho nó có tác dụng 3 ký tự sau "^" và sau "|". Ví dụ như
abcd^efghi thì sẽ là abcd[SUP]efg[/SUP]hi.
Cám ơn mọi người
1365[SUP]+10[/SUP] x 430[SUP]+10[/SUP] x 17
Mỗi một dòng như thế sẽ nằm trong một ô, vấn đề em cần ở đây là làm cách nào để tạo superscript nhanh chứ mỗi lần đánh đơn hàng mất rất nhiều thời gian để tô đen từng cái, rồi vào menu chọn superscript.
Em không rành VBA, nhưng có lên mạng và tìm được đoạn code sau:
Private Const CHAR_SUP As String = "^"
Private Const CHAR_SUB As String = "|"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If IsNumeric(Target.Value) Then Exit Sub
'Look for SUPERSCRIPT character
If InStr(1, Target.Value, CHAR_SUP) > 1 Then
SuperScript Target, InStr(1, Target.Value, CHAR_SUP)
End If
'Look for SUBSCRIPT character
If InStr(1, Target.Value, CHAR_SUB) > 1 Then
SubScript Target, InStr(1, Target.Value, CHAR_SUB)
End If
End Sub
Private Sub SuperScript(ByVal Target As Range, ByVal iPosition As Integer)
Target.Characters(Start:=iPosition + 1, Length:=1).Font.SuperScript = True
Target.Characters(Start:=iPosition, Length:=1).Delete
End Sub
Private Sub SubScript(ByVal Target As Range, ByVal iPosition As Integer)
Target.Characters(Start:=iPosition + 1, Length:=1).Font.SubScript = True
Target.Characters(Start:=iPosition, Length:=1).Delete
End Sub
Đoạn code này sẽ thay:
abcd^efg thành abcd[SUP]e[/SUP]fg
abcd|efg thành abcd[SUB]e[/SUB]fg
Đoạn code này nói chung là nó chạy, nhưng nhược điểm của nó là chỉ có tác dụng cho 1 ký tự/số đầu tiên, xin mọi người chỉ dùm làm cách nào cho nó có tác dụng 3 ký tự sau "^" và sau "|". Ví dụ như
abcd^efghi thì sẽ là abcd[SUP]efg[/SUP]hi.
Cám ơn mọi người
Lần chỉnh sửa cuối: