Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Julisbas
#31803
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
Por babdallas
#31818
Eu pensaria em usar o evento worksheet_Change do Workbook. Anexe o arquivo para ficar mais claro o que deseja.
Por osvaldomp
#31819
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
Por Julisbas
#31865
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.
Por osvaldomp
#31869
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.
Por Julisbas
#31891
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
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#31903
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"
Por Julisbas
#31935
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
Por osvaldomp
#31936
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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord