Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por RicardoGuitt
#68202
Olá noa noite!
Gostaria de saber se é possivel mesclar linhas a partir de uma informação na coluna A então mesclar as linhas de A:G
Mantendo o texto centralizado, qual seria essa função no VBA?
Por osvaldomp
#68203
RicardoGuitt escreveu: 06 Dez 2021 às 22:06 ... então mesclar as linhas de A:G ~~~> mesclar A:G significa mesclar colunas e não mesclar linhas. ;)
#

Mesclar células no Excel não é uma manobra bem-vinda ...
Segue um comando básico pois você não forneceu informações suficientes para a elaboração de uma solução.
Código: Selecionar todos
 If Range("A5").Value = "BozoNeverMore" Then
  Range("A5:G5").Merge
  Range("A5:G5").HorizontalAlignment = xlCenter
 End If
#
Segue uma alternativa sem mesclar células.
Código: Selecionar todos
 If Range("A5").Value = "BozoNeverMore" Then
  Range("A5:G5").HorizontalAlignment = xlCenterAcrossSelection
 End If
RicardoGuitt, JCabral agradeceu por isso
Avatar do usuário
Por RicardoGuitt
#68204
osvaldomp, vou tentar deixar mais claro, o que eu preciso é que se em qualquer linha da coluna 1 (A) eu digitar um texto especifico então o texto fique centralizado entre as colunas A:G
Ex: Ricardo na linha 2 da coluna A
Então o nome Ricardo ficará centralizado na linha 2 de A2:G2
Se for na linha 5 a mesma coisa A5:G5.
Por osvaldomp
#68207
Instale uma cópia de um dos códigos abaixo no módulo da planilha de interesse.
Para acessar o módulo clique com o direito na guia da planilha e escolha Exibir Código.

opção1 - mesclar (não recomendável)
Código: Selecionar todos
Private  Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column > 1 Then Exit Sub
 If Target.Value = "Ricardo" Then
   Cells(Target.Row, 1).Resize(, 7).Merge
   Cells(Target.Row, 1).Resize(, 7).HorizontalAlignment = xlCenter
  End If
End Sub
#

opção2 - sem mesclar porém com efeito visual semelhante
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 If targe.Count > 1 Then Exit Sub
 If Target.Column > 1 Then Exit Sub
 If Target.Value = "Ricardo" Then Cells(Target.Row, 1).Resize(, 7).HorizontalAlignment = xlCenterAcrossSelection
End Sub
Avatar do usuário
Por RicardoGuitt
#68213
osvaldomp,
Eu não consegui, não funcionou...
Segue anexo a planilha em questão.
Onde estão os nomes é o que eu gostaria
de centralizar nas colunas e linhas.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#68214
RicardoGuitt escreveu: 07 Dez 2021 às 18:58 Eu não consegui, não funcionou...
osvaldomp escreveu:Instale uma cópia de um dos códigos abaixo no módulo da planilha de interesse.
Você precisa instalar um dos códigos. Lembra disso?
RicardoGuitt agradeceu por isso
Por osvaldomp
#68216
Se nada aconteceu então você instalou em lugar errado. 8-)

No arquivo que você postou não encontrei nenhum deles instalado. :?:
RicardoGuitt agradeceu por isso
Avatar do usuário
Por RicardoGuitt
#68225
Eu estou começando com VBA muito recentemente, provavelmente foi isso… eu instalei a partir de um modulo
Na verdade em um deles deu erro 424 que eu não faço a mimima ideia de como resolver e em outra situação até funcionou mas sonente em uma inica linha e fazendo com a formula procv não funcionasse por completo…
E sim no arquivo que enviei não tem nenhum instalado, foi mais para mostrar o que eu quero, mas obrigado @osvaldomp vou continuar tentando.
Avatar do usuário
Por RicardoGuitt
#68226
@osvaldomp
Consegui dessa forma abaixo:
If Target.Count > 1 Then Exit Sub
If Target.Column > 1 Then Exit Sub
If Target.Value = "RICARDO" Then Cells(Target.Row, 1).Resize(, 7).HorizontalAlignment = xlCenterAcrossSelection
End Sub

Talvez ou com certeza a planilha não está com a macro dá melhor forma mas funcionou!
Segue anexo.
Por osvaldomp
#68228
Olá, @RicardoGuitt .

No caso de múltiplos nomes, ao invés de repetir as instruções para cada um dos nomes, é possível montar uma matriz com todos os nomes e colocar as instruções uma única vez. Veja abaixo.
Código: Selecionar todos
 Dim nomes As Variant
  If Target.Column > 1 Then Exit Sub
  nomes = Array("IRINEU", "LEON", "PAULO", "RICARDO", "STEPHANIE")
   If Not IsError(Application.Match(Target.Value, nomes, 0)) Then
    Cells(Target.Row, 1).Resize(, 7).HorizontalAlignment = xlCenterAcrossSelection
   End If
RicardoGuitt agradeceu por isso

Today I will introduce the member of the Eleaf Ba[…]

Tente a partir destas 3 combinaçõe[…]

Assiduidade

Não sei se o compreendo corretamente. Tente[…]

Boa noite. Faltou você postar a outra aba c[…]

BUSCAR DADOS EM OUTRA ABA

Boa noite. Para postar um modelo da sua planilha,[…]

"Deve exibir status do documento como inf[…]

Prezados, boa tarde! Tenho um desafio de criar um[…]

Controles ActiveX Excel Mac

Experimente fazer um downgrade para o office 2011.