Length = Len(ActiveCell.Value)
For i = 1 To Length
If (Mid(ActiveCell.Value, i, 1) = ".") Then
ActiveCell.Value = "'" & Left(ActiveCell.Value, i - 1) & Right(ActiveCell.Value, Length - i)
ActiveCell.Characters(i, Length - i).Font.Superscript = True
ActiveCell.HorizontalAlignment = xlRight
Exit For
End If
Next i
Acredito que a maior parte disso seja autoexplicativa.
Left(ActiveCell.Value, i - 1) & Right(ActiveCell.Value, Length - i)
reconstrói o conteúdo da célula
com a substring à esquerda do .
(no seu exemplo, 3
)
concatenada com a substring à direita do .
( 45
),
deixando de fora o .
em si.
Eu coloquei um '
na frente dele para transformá-lo em texto -
aparentemente você não pode formatar caracteres individuais em um valor numérico.
Eu configurei o alinhamento horizontal para a direita porque isso é normal para números,
mas a célula agora é texto e o padrão é alinhado à esquerda.