Ir ao conteúdo
  • Cadastre-se

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


Ir à solução Resolvido por OreiaG,

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

  • Solução

@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
Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!