Если вы создаете сноски (так, чтобы ваши верхние индексы были в конце), то, возможно, что-то вроде этого, которое
- Перебирает символы в ячейке, начиная с конца.
- Выход из l oop после попадания в символ, не являющийся верхним индексом, в противном случае символы сохраняются во временной переменной.
- Проверяет, является ли временная переменная числом, и, если да, увеличивается на один.
- Заменяет старое число новым.
- Повторно применяет формат верхнего индекса.
Sub IncrementFootnote()
With ActiveCell
If .HasFormula Or TypeName(.Value) <> "String" Then Exit Sub
Application.ScreenUpdating = False
' extract superscript text, starting from the end
Dim i As Long
For i = .Characters.Count To 1 Step -1
If .Characters(i, 1).Font.Superscript Then
Dim temp As String
temp = .Characters(i, 1).Text & temp
Else
Exit For
End If
Next
' if a number, increment, replace the old number, and superscript
If IsNumeric(temp) Then
Dim newNumber
newNumber = temp + 1
.Replace temp, newNumber
Dim pos As Long
pos = InStrRev(.Value, newNumber)
.Characters(pos, Len(newNumber)).Font.Superscript = True
End If
End With
End Sub
Чтобы вычесть одно, просто измените newNumber = temp + 1
на newNumber = temp - 1
.
Обратите внимание, что
If .HasFormula Or TypeName(.Value) <> "String" Then Exit Sub
проверяет, является ли ячейка действительно текстовой, поэтому она пропускает формулы, а также только цифры .