Notifications
Clear all

Auto Ajuste de Altura de Célula

18 Posts
3 Usuários
0 Reactions
2,959 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia amigos,

Gostaria de uma ajuda, não entendo muito de VBA, mas acredito que seria a única forma de resolver meu problema.
Estou criando em minha empresa um gerador de Descrições de Cargo, nele terei uma Aba "Base" com todas as características dos cargos que serão puxadas (através de PROCV) para uma Aba onde conterá uma "Máscara" para trazer essas informações para impressão.

O problema é que:

1. As informações na guia "Base" estão em texto cursivo e cada cargo possui uma quantidade diferente de informação.
2. Tive que mesclar os campos na Aba "Máscara" para poder ficar na largura da impressão que preciso.
3. Por fim, quando puxo as informações da "Base" para a "Máscara", o texto fica somente em uma linha, não sendo feito o auto ajuste da altura.

Pesquisando exaustivamente, descobri a opção em Página Inicial > Células > Formatar > AutoAjuste da Altura da Linha.
No entanto, este não funciona em células mescladas.

Em VBA encontrei:

Private Sub Worksheet_Change(ByVal Target As Range)
Columns("A:F").EntireRow.AutoFit
End Sub

Mas também só funciona em células não mescladas.

Que opção eu teria para fazer isso?
Não sei mais o que fazer.

 
Postado : 03/03/2017 6:39 am
(@pfarias)
Posts: 0
New Member
 

oi aacayipsinjr,

O código que você postou está correto. Apenas o local que não está correto. Deve colocar o código dentro da planilha no qual deseja que a execução aconteça.

Porém, qual a linha que você quer atualizar o tamanho? A que está com o nome do cargo?

nesse caso, não irá funcionar mesmo. O que eu aconselho, é tirar a mescla e utilizar apenas uma celula e colocar do tamanho que precisa. Como no anexo.

 
Postado : 03/03/2017 7:30 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

As células que apresentarão texto são todas que trago através da PROCV, ocorre na linha 17 por exemplo.

 
Postado : 03/03/2017 7:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

As células que apresentarão texto são todas que trago através da PROCV, ocorre na linha 17 por exemplo.

Na realidade dei exemplo da linha errada, para analise da situação seria a linha 15, 18, 41.
Nestes casos eu não conseguiria deixar a célula sem mesclar, ou conseguiria?

 
Postado : 03/03/2017 7:50 am
(@hronconi)
Posts: 314
Reputable Member
 

Segue anexo

 
Postado : 03/03/2017 8:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Segue anexo

Henrique,

Aqui não deu certo.
Só para reforçar, ao trazer os dados da aba Base através da procv do que é digitado na aba Máscara (a partir do nome do cargo em D3:H3), muitas informações, a exemplo do que ocorre nas linhas 17, 20 e 43, são extensas para o tamanho da linha.
Nesse sentido, preciso de um comando que auto ajusta a altura das células em que, de maneira aleatória, apresenta texto maior do que uma linha padrão.

Não sei se consegui explicar.

Mas mesmo assim, obrigado.

 
Postado : 03/03/2017 8:27 am
(@hronconi)
Posts: 314
Reputable Member
 

1) Retire as mesclagens das células.
2) Faça o alinhamento na seleção para ficar centralizado
3) Use o código dentro da worksheet e não em um módulo separado.

Para mim funcionou!

 
Postado : 03/03/2017 8:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Se eu tiro a mesclagem, o texto fica somente em uma coluna, portanto, não consigo imprimir.

 
Postado : 03/03/2017 10:28 am
(@pfarias)
Posts: 0
New Member
 

Você pode deixar a linha com uma altura fixa, ou o texto varia muito de tamanho?

 
Postado : 03/03/2017 10:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Você pode deixar a linha com uma altura fixa, ou o texto varia muito de tamanho?

Varia, pq depende do cargo.
Alguns podem apresentar 2 "linhas", outros mais de 10 "linhas".

 
Postado : 03/03/2017 10:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Achei esse código, mas não consegui fazer funcinar:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range

With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
    MrgeWdth = MrgeWdth + cc.ColumnWidth
    
Next
Application.ScreenUpdating = False
    On Error Resume Next
    ma.MergeCells = False
    c.ColumnWidth = MrgeWdth
    c.EntireRow.AutoFit
    NewRwHt = c.RowHeight
    c.ColumnWidth = cWdth
    ma.MergeCells = True
    ma.RowHeight = NewRwHt
    cWdth = 0: MrgeWdth = 0
    On Error GoTo 0
    Application.ScreenUpdating = True
End If
End With
End Sub
 
Postado : 03/03/2017 10:42 am
(@pfarias)
Posts: 0
New Member
 

Vê agora se funciona melhor.

Alterei o código para adequar a essa tua necessidade.

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim Rng        As Range
   Dim NumBreak As Integer
    
   For Each Rng In Range("ItemsCargo")

    NumBreak = Len(Rng.Value) - Len(Application.WorksheetFunction.Substitute(Rng.Value, Chr(10), vbNullString))
    
        If NumBreak > 0 Then
            Rng.Rows.RowHeight = 15 * NumBreak
        End If
   
   Next
End Sub
 
Postado : 03/03/2017 11:36 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pietro,

Maravilha, era isso mesmo!!!
Só observei um problema: funciona somente no item 3. ATIVIDADES, no restante da planilha ele não adequa.
Além disso, mesmo funcionando, ele não mostra a última linha. Exemplo, nesse item 3. ATIVIDADE o cargo de Diretor possui 7 itens, mas somente 6 aparecem, testei com outros cargos e ocorre a mesma situação.

 
Postado : 03/03/2017 12:03 pm
(@pfarias)
Posts: 0
New Member
 

Vê agora. Qualquer erro só avisar.

Só um detalhe, o código conta a quantidade de quebra de linhas que ocorrem. Com isso, pode falhar nos textos que sejam longos demais e não tenham quebra de linha (ALT + ENTER)

 
Postado : 03/03/2017 12:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Só um detalhe, o código conta a quantidade de quebra de linhas que ocorrem. Com isso, pode falhar nos textos que sejam longos demais e não tenham quebra de linha (ALT + ENTER)

Pietro, show de bola.
Mas apresentou falha, mesmo eu fazendo a quebra.

Estou encaminhando um PRINT para você ver, note que na linha 15 e 18, mesmo com tamanhos de textos diferentes, há uma interrupção no ajuste do tamanho. Com isso, algumas informações ficam "ocultas".

Tentei mexer no código, mas sem sucesso.
O que pode ser?

 
Postado : 03/03/2017 1:27 pm
Página 1 / 2