• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

heldercorreia

Formatar texto numa célula via VBA (Excel)

6 mensagens neste tópico

Cá vai mais uma dúvida:

Preciso de fazer algo do género:

Cells(a,b).value=Sn/U2n

Para que fique não só mais legível como também mais perceptível do ponto de vista matemático.

Alguma dica?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora