Мне скучно и в ученом настроении, так что вот длинный «ответ», который также немного объясняет, как вы можете понять эти вещи для себя в будущем :)
Я набрал abc123def
в ячейку и записал макрос, используя макрорекордер.
Здесь вы должны всегда начать, если вы не знаете, что такое правильный синтаксис.
В любом случае, я выбрал цифровую часть этой ячейки и щелкнул правой кнопкой мыши, изменил ячейку, изменил шрифт на верхний индекс.
Это то, что дает мне магнитофон. Это много кода. К счастью, много мусора.
Sub Macro2()
With ActiveCell.Characters(Start:=1, Length:=3).Font 'Applies to the first 3 characters
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
With ActiveCell.Characters(Start:=4, Length:=3).Font 'Applies to the middle 3 characters
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = True
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
With ActiveCell.Characters(Start:=7, Length:=3).Font 'Applies to the last 3 characters
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
End Sub
Что представляет три блока форматирования: первое, что мы применяли верхний индекс к первым 3-х символов, которые не изменяются, то 3, а затем последние три символа.
Почти все это свойства по умолчанию, так как я не сделал никаких других изменений, так что я могу пересмотреть его к этому:
Sub Macro2()
With ActiveCell.Characters(Start:=4, Length:=3).Font
.Superscript = False
End With
End Sub
Теперь мы можем видеть, что есть две важные части к этому. Первая часть - , как указать, какие символы следует форматировать. Это делается путем refereing к клетке .Characters
:
ActiveCell.Characters(Start:=4, Length:=3).Font
Таким образом, мы можем видеть, что этот макрос относится к символам в positon 4-6 в строке «abc123def», или «123».
Следующей очевидной частью является присвоение .Font.Superscript
объекта: True
.
Теперь вы хотите обобщить это, чтобы вы могли применить его в любом месте. Вышеприведенный код является «жестко запрограммированным» аргументами Start
и Length
. Нам нужно сделать его динамичным. Самый простой способ сделать это - пропустить 1 символ за раз и проверить, является ли это числовым, если да, примените надстрочный индекс.
Sub ApplySuperscriptToNumbers()
Dim i As Long
Dim str As String
Dim rng As Range
Dim cl As Range
'## Generally should work on any contiguous "Selection" of cell(s)
Set rng = Range(Selection.Address)
'## Iterate over each cell in this selection
For Each cl In rng.Cells
str = cl.Value
'## Iterate over each character in the cell
For i = 1 To Len(str)
'## Check if this character is numeric
If IsNumeric(Mid(str, i, 1)) Then
'## Apply superscript to this 1 character
cl.Characters(Start:=i, Length:=1).Font.Superscript = True
End If
Next
Next
End Sub
Если вы раньше не использовали python, вы не хотите использовать python для этого. –