Ir ao conteúdo

Excel Formatar Range dinâmico na máscara do relatório


Ir à solução Resolvido por OreiaG,

Posts recomendados

Postado

Olá Senhores! Mais uma vez recorro ao conhecimento dos colegas aqui do fórum.

A empresa utiliza uma planilha que é uma máscara de formulário, onde as células são preenchidas facilmente com as funções INDICE+CORRESP.

Porém, há um campo dinâmico, o único a ser preenchido, que não consigo resolver por VBA.

Na célula A32 deve ser digitado um relatório de conformidade e vistoria. Esse relatório pode conter de 5 à "n" linhas.

Manualmente é fácil mesclar as células, quebrar o texto e justificar o alinhamento do texto. Geralmente vai até o limite impresso do relatório, coluna T.

Devido à essa variação do número de linhas do relatório e  não poder haver linhas em branco, não consigo criar uma macro para mesclar as células, quebrar o texto e justificar o alinhamento, caso contrário seria só fixar uma range(A32:T"n") e aplicar a macro.

Agradeço desde já a ajuda recebida.

Postado

@ScofieldgynEncaminho um modelo com dados ficitícios, mas que atende minha necessidade.

As células com margem são preenchidas através das funções ÍNDICE+CORRESP.

Na célula A42 íncia uma região dinâmica, podendo ser de 5 à "n" linhas.

Essa range tem que se auto-ajustar, delocando linhas para baixo ou para cima.

Manualmente é fácil mesclar as células, quebrar o texto e justificar o alinhamento do texto. Geralmente vai até o limite impresso do relatório, coluna AD.

Devido à essa variação do número de linhas do relatório e não poder haver linhas em branco, não consigo criar uma macro para mesclar as células, quebrar o texto e justificar o alinhamento, caso contrário seria só fixar uma range(A42:AD"n") e aplicar a macro.

Agradeço desde já a ajuda recebida.

cs_modelo.zip

  • Solução
Postado

@Martti  Veja se atende.


 

Sub FormataCélulas()
 Dim cw As Double, rh As Double, cwA As Double, c As Range
  With Range("A42:AD42")
   .MergeCells = False
   cwA = .Cells(1).ColumnWidth
   For Each c In .Cells
    cw = cw + c.ColumnWidth
   Next c
    cw = cw + .Count * 0.66
   .Cells(1).ColumnWidth = cw
   .Cells(1).WrapText = True
   .EntireRow.AutoFit
   rh = .RowHeight
   .Cells(1).ColumnWidth = cwA
   .MergeCells = True
   .RowHeight = rh
   .HorizontalAlignment = xlJustify
   .VerticalAlignment = xlJustify
  End With
End Sub

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...