Ir ao conteúdo

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

Postado

 

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

  • Solução
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!