Página 1 de 1

Macro

Enviado: 06 Abr 2018 às 13:12
por Julisbas
Tenho 48 planilhas criadas iguais e uma no início com um menu, minha intenção é que a planilha que estiver sendo usada, no menu onde esta descrito seu número mudaria de cor, para a cor vermelha, informando que essa esta com informações digitadas. Eu pensei usar macro, no entanto, teria que criar 96 macros, sendo duas para cada planilha, uma para apertar o botão e o numero mudar de cor para vermelho e outra para retirar a cor vermelha e voltar a cor anterior. Não teria outra forma de fazer essa ação para evitar esse trabalho?

Desde de já agradeço.

At.te

Re: Macro

Enviado: 06 Abr 2018 às 17:22
por babdallas
Eu pensaria em usar o evento worksheet_Change do Workbook. Anexe o arquivo para ficar mais claro o que deseja.

Re: Macro

Enviado: 06 Abr 2018 às 17:38
por osvaldomp
Julisbas escreveu:... a planilha que estiver sendo usada, ~~~> você quer dizer a planilha ativa ?

no menu onde esta descrito seu número mudaria de cor, para a cor vermelha, ~~~> você se refere às guias com os nomes das planilhas ?

informando que essa esta com informações digitadas. ~~~> somente a mudança da cor da guia não permite essa conclusão ;)

Eu pensei usar macro, no entanto, teria que criar 96 macros, ~~~> :o
Experimente após colar os dois códigos abaixo no módulo de "EstaPasta_de_trabalho". Não é necessário botão, pois os códigos serão disparados ao ativar/desativar as planilhas.
Se não for esse o resultado desejado, então explique.
Código: Selecionar todos
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Sh.Tab.Color = 255
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Sh.Tab.Color = xlNone
End Sub

Re: Macro

Enviado: 09 Abr 2018 às 10:17
por Julisbas
Experimente após colar os dois códigos abaixo no módulo de "EstaPasta_de_trabalho". Não é necessário botão, pois os códigos serão disparados ao ativar/desativar as planilhas.
Se não for esse o resultado desejado, então explique.
Código: Selecionar todos
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Sh.Tab.Color = 255
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Sh.Tab.Color = xlNone
End Sub
[/quote]

Bom dia, Osvaldo
A ideia é parecida com essa, mas não é bem assim, o que eu quero é quando eu preencher uma planilha, o link (numeração) dela que esta no sumário (menu) mude para cor vermelha. Quando eu tiver apagado todas as informações dessa planilha o link (numeração) dela que esta no sumário (menu) volta a cor normal anterior. A ideia é para que no sumário venha me mostrar quais planilhas foram editadas.

Desde de já agradeço.

Re: Macro

Enviado: 09 Abr 2018 às 10:30
por osvaldomp
Sugiro que você disponibilize uma amostra do seu arquivo Excel contendo a situação antes e a situação desejada depois de executar a macro, com as explicações nas próprias planilhas.

Re: Macro

Enviado: 09 Abr 2018 às 15:07
por Julisbas
osvaldomp escreveu:Sugiro que você disponibilize uma amostra do seu arquivo Excel contendo a situação antes e a situação desejada depois de executar a macro, com as explicações nas próprias planilhas.
Boa tarde, osvaldo

Estou enviando um arquivo de demostração, vê se conseguiu entender.

At

Re: Macro

Enviado: 09 Abr 2018 às 22:46
por osvaldomp
Cole o código abaixo no lugar dos códigos que eu passei antes.
Código: Selecionar todos
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Dim hy As Range
 If Sh.Name = "Menu" Or Target.Column <> 2 Then Exit Sub
  Set hy = Sheets("Menu").[C:C].Find(Sh.Name, lookat:=xlWhole)
  hy.Font.Color = IIf(Sh.Cells(Rows.Count, 2).End(3).Row > 3, vbRed, vbBlue)
End Sub
obs.
1. antes de colar o código desfaça a mesclagem de células ao menos da planilha "Menu" da linha 4 para baixo (sugiro que você desfaça as mesclagens de todas as planilhas e nunca mais volte a mesclar células, pois células mescladas são desnecessárias, inúteis e podem provocar erros em fórmulas e em macros; como alternativa utilize os recursos de ajustar a largura de coluna e a altura de linha. Em lugar de mesclar células na horizontal você pode conseguir um efeito visual equivalente assim ~~~> ex. digite algo em F5 / selecione as células F5:K5 / Formatar Células / Alinhamento / Horizontal / Centralizar seleção / OK)
2. o código irá retornar erro se o nome da planilha alterada não for encontrado na coluna C da planilha "Menu"

Re: Macro

Enviado: 11 Abr 2018 às 09:58
por Julisbas
osvaldomp escreveu:Cole o código abaixo no lugar dos códigos que eu passei antes.
Código: Selecionar todos
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Dim hy As Range
 If Sh.Name = "Menu" Or Target.Column <> 2 Then Exit Sub
  Set hy = Sheets("Menu").[C:C].Find(Sh.Name, lookat:=xlWhole)
  hy.Font.Color = IIf(Sh.Cells(Rows.Count, 2).End(3).Row > 3, vbRed, vbBlue)
End Sub
obs.
1. antes de colar o código desfaça a mesclagem de células ao menos da planilha "Menu" da linha 4 para baixo (sugiro que você desfaça as mesclagens de todas as planilhas e nunca mais volte a mesclar células, pois células mescladas são desnecessárias, inúteis e podem provocar erros em fórmulas e em macros; como alternativa utilize os recursos de ajustar a largura de coluna e a altura de linha. Em lugar de mesclar células na horizontal você pode conseguir um efeito visual equivalente assim ~~~> ex. digite algo em F5 / selecione as células F5:K5 / Formatar Células / Alinhamento / Horizontal / Centralizar seleção / OK)
2. o código irá retornar erro se o nome da planilha alterada não for encontrado na coluna C da planilha "Menu"

Bom dia, Osvaldo.
Antes de mais nada, já agradeço pelo código é isso mesmo que eu queria. Agora só preciso de mais uma coisa, quando fui colocar o código para a planilha na qual estou realmente criando, porque a outra foi um teste, na segunda planilha ao começar a digitar da a seguinte mensagem de erro: " Erro 91 - Variável de objeto ou variável com bloco 'With' não foi definida"
Eu sou bem leigo em programação, estudei o código e não consegui identificar, você sabe o que pode está acontecendo?

At

Macro

Enviado: 11 Abr 2018 às 10:26
por osvaldomp
Verifique obs. item 2 do meu post anterior. Se não for esse o erro então disponibilize uma amostra do seu arquivo.
Sugestão - para responder clique em Resposta Rápida ou em +Resposta, só clique em Responder com citação se necessário.