Jump to content

Formatar texto numa célula via VBA (Excel)


heldercorreia

Recommended Posts

Olá,

Basicamente só precisas de alterar a formatação após colocares lá o valor. Utilizas as propriedades Subscript e Superscript para formatar como queres, usando Characters(inicio, tamanho) para formatar apenas alguns caracteres.

Exemplo:

[a1].Value = "Sn/U2n"
[a1].Characters(2, 1).Font.Subscript = True
[a1].Characters(6, 1).Font.Subscript = True
[a1].Characters(5, 1).Font.Superscript = True
Link to comment
Share on other sites

Experimentei, e funciona, consigo obter o que pretendo.. no entanto preciso de inserir muitas fórmulas..

Então escrevi uma função que recebe a string e uma sequência de variáveis de controlo com valores entre 0 e 2 em que cada valor corresponde a um estado, superscript(2), subscript(1), ou normal(0).

Assim sendo basta fazer algo do género:

call xpto("I2n*UrT3",0,2,1,0,0,1,1,2)    para produzir I2n*URT3

Em vez de precisar de uma linha de código para cada caracter..

Só é pena ter que ser definida para um número limitado de caracteres à partida..

Abraço e obrigado!  B)

Link to comment
Share on other sites

Só é pena ter que ser definida para um número limitado de caracteres à partida..

Podes passar um array, mas penso que é o mesmo neste caso-

Sub foo(str As String, val() As Byte)
Dim x As Integer

    For x = 0 To UBound(val)
        Debug.Print val(x)
    Next x

End Sub


Sub btnFormatText()

    Dim formatText(4) As Byte
    formatText(0) = 0
    formatText(1) = 1
    formatText(2) = 0
    formatText(3) = 2
    formatText(4) = 1

    Call foo("abcde", formatText)
    
End Sub
Link to comment
Share on other sites

Boas!

Supondo que tenha em 03 linhas (A1, A2 e A3) frases maiores e queria alterar em A1 Characters 1,2 e 3 - 11, 12, 13 e 14 - 25, 26 e 27 p/ Bold

em A2 Characters 1,2 e 3 - 11, 12, 13 e 14 - 25, 26 e 27 p/ Bold

em A1 Characters 1,2 e 3 - 11, 12, 13 e 14 - 25, 26 e 27 p/ ColorIndex = 41

Como seria um ciclo para tal procedimento?

Link to comment
Share on other sites

Viva caro José

Não vou postar a totalidade do código, mas deixo sim o modo de solucionar o problema.

    Sheet2.Range("A1").Select
    With ActiveCell.Characters(Start:=1, Length:=3).Font
    .Bold = True
    End With
    

Portanto, começa-se por seleccionar a célula onde se deseja formatar o texto, seguidamente vamos alterar a formatação dos caracteres dessa célula.. Podemos seleccionar qualquer porção da string que estiver presente nessa célula com o caracter onde queremos que se inicie uma 'sub-string' e o comprimento que se deseja que ela tenha: Start:=6, Lenght:=8 , por exemplo selecciona os caracteres desde a posição 6 até à posição 6+8 = 14.

Seguidamente, quem diz o .Bold diz também .Color, .ColorIndex, .Italic, etc enfim, todos os constituintes do objecto 'Font' de uma célula.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.