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.
  • Avatar do usuário
  • Avatar do usuário
Avatar do usuário
Por JCabral
Avatar
#43146
Boa noite

Pedindo de novo ajuda para encontrar uma solução para o problema que passo a explicar:
- tenho uma planilha com várias abas e em seis delas existe um mapa constituído por seis shapes, em todas as abas é o mesmo mapa e as shapes têm o mesmo nome (um nome diferente para cada uma das seis mas igual em cada aba).
- No exemplo que anexo tento simular isso mas só com três abas "DDD";"ADS";"ZPG" e com duas shapes em cada aba "prg_CCON"; "prg_CCOGP"

Precisava um código que me alterasse as cores de todas as shapes na Planilha, o código que fiz só me altera a cor das shapes de uma aba.

Alguma ajuda?
Obrigado
Jorge Cabral
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#43154
Olá Jorge,

Veja a planilha anexa, e se é isso que você precisa.

A macro percorre todas as planilhas, e atua em algumas delas, mas pra isso ela precisa, de alguma forma, saber em quais planilhas atuar, e em quais não. Adotei como critério procurar o nome da planilha em tela em uma lista. Isso está dentro da instrução InStr.

O critério pode ser mudado para, por exemplo, todas as planilhas cujo nome inicia pelo sinal de menos. Bastaria renomear as 3 planilhas com –DDD, -ADS e –ZPG, e na macro mudar o if paa verificar se o primeiro caracter do nome da planilha é o sinal de menos. Se você insere e apaga planilhas com frequência, esse método seria melhor porque dispensa inserir o nome da nova planilha dentro da macro. Bastaria colocar menos no nome.

Outro critério seria fazer a mudança de cor em todas as planilhas que contém shapes com aqueles nomes.

Você deve definir qual o critério mais adequado à sua forma de operar a planilha. Após definido, alteramos a macro para segui-lo.

Percebi que você usou ON ERROR RESUME NEXT. Essa instrução não faz os erros não acontecerem, ela apenas inibe o aviso e evita que a macro pare a execução. Não sei se você tem ou não experiência em macros, mas se não tem, é melhor não usar, porque é desejável que você tome conhecimento dos erros para poder corrigi-los. As condições para usar essa instrução são bem específicas, e não frequentes.

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por JCabral
Avatar
#43155
Obrigado pela sua solução.

Como posso adaptar o código se o critério for "Outro critério seria fazer a mudança de cor em todas as planilhas que contém shapes com aqueles nomes.", esse era o ideal tendo em consideração outras operações que tenho que fazer.

É possível adaptar?

Obrigado mais uma vez.
Avatar do usuário
Por Jimmy
Avatar
#43157
Sim, é. Posso dizer que todas as planilhas que tem shapes, tem os 6 shapes que mencionou (eventualmente alguns a mais, mas esses não importam), ou há planilhas que tem shapes mas não tem todos os 6?
Avatar do usuário
Por JCabral
Avatar
#43163
Boa tarde Jimmy

É assim na minha planilha existem 7 abas que têm as seis Shapes que falei com as seguintes designações - prg_CON; prg_COGP; prg_COCN; prg_COCS; prg_COGL; prg_COS - e em todas estas abas vão existir outras shapes;
O que pretendo é quando mudar as cores das seis Shapes , que será acionado por uma combobox no Ribbon que não está no exemplo que adicionei aqui, sejam mudadas em todas as sete Abas.
Existem outras abas com dados, tabelas, cálculos auxiliares...., mas não têm shapes.

Não sei fui claro?
Obrigado
Jorge Cabral
Avatar do usuário
Por Jimmy
Avatar
#43177
Sim, foi claro.

Segue a panilha anexa.

Mudei algumas outras coisas na macro, como por exemplo, mudei a shpCON de variável para Constante, uma vez que me parece que seu conteúdo não vai mudar.

Tirei a parte da transformação do código da cor para RGB (a linha onde tinha os 255), uma vez que depois ele era reconvertido de volta de RGB para código. Fica mais fácil usar diretamente a própria variável CColor.

Para acrescentar shapes insira mais linhas na linha da Const (primeira linha) lembrando de colocar o sinal de "_" no final de cada linha (sinal de continuação na linha seguinte), exceto na última.

Acrescenta também na linha dos IFs (If Idx = 1 ...) onde as novas linhas devem ser Idx = 3, Idx = 4, etc...

Se tiver dificuldades avise.

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
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