Ir ao conteúdo
  • Cadastre-se

Excel Porque o código vba abaixo desmescla, mas não repete rótulos na MergeArea?


Ir à solução Resolvido por Edson Luiz Branco,

Posts recomendados

 

Dim lCel As Range

Dim lRng As Range

Set lRng = Sheets("Plan1").Range("A1:L1000")

For Each lCel In lRng

If lCel.MergeCells Then lCel.MergeArea.UnMerge lCel.MergeArea.Formula = lCel.Formula 'Esta linha não é executada na MergeArea

End If

Next

End Sub

Link para o comentário
Compartilhar em outros sites

  • Solução

Isso ocorre porque como o range já foi "desmesclado" na etapa imediatamente anterior (lCel.MergeArea.UnMerge), então a etapa seguinte (lCel.MergeArea.Formula = ...) não conterá mais uma área mesclada em que aplicar a fórmula, mas sim uma célula única.

 

Para evitar isso ou você guarda o bloco mesclado numa variável temporária antes de explodi-lo ou usa um bloco With/End With. Exemplo:

 

Sub ReplicaConteúdoMescladas()
  Dim lCel As Range
  Dim lRng As Range
  Set lRng = Sheets("Plan1").Range("A1:L1000")
  For Each lCel In lRng
    If lCel.MergeCells Then
      With lCel.MergeArea
        .UnMerge
        .Formula = lCel.Formula
      End With
    End If
  Next
End Sub

 

  • Obrigado 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!