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
#7864
Olá pessoal!

Quando usamos aquele evento (macro ) Private Sub Workbook_open, sei que a função dele é rodar sempre quando a pasta trabalho for aberta. Teria como alterar esse evento para ele rodar só uma vez, e não sempre que eu abrir minha pasta de trabalho?

Grato

Adriano
#7866
Eu criaria um registro em uma célula qualquer de uma planilha, tipo se a célula for = 0 então executa a primeira abertura e muda o valor da célula para 1, se for = 1 então não faz nd ou z.

If range("X").value = 0 then
[1ª vez]
range("X").value = 1
Else
[demais]
End If

Bom... uma ideia. :) ;)
#7878
Prezado Adrian;
A ideia do Gabriel se eu entendi corretamente como a execução vai acontecer somente uma vez ao executar será atribuído o valor 1 na célula fazendo que a mesma não execute novamente.
Vamos ao código:
Código: Selecionar todos
If range("X").value = 0 then // se o valor da célula que você escolheu exemplo no lugar de "X"  for igual a zero
/Execute o código aqui 
range("X").value = 1  // atribui o valor da célula x para 1 fazendo com a condição fique falsa não executando a mesma novamente.
Else
End If
#7899
Vou explicar melhor, a macro editada no meu projeto VBA em EstaPasta_de_trabalho é a seguinte:

Private Sub workbook_open()

Sheets("Plan3").Activate

End Sub

Obs: Com essa macro, sempre que eu abro minha pasta de trabalho, sempre também é aberta a "Plan3". Minha rotina é abrí-la todos os dias, a "Plan3" é a home page da minha pasta, por isso que programei ela para ser aberta, e a "Plan2" é a planilha que contém os nomes dos meus clientes e suas respectivas datas de nascimento. Eu queria que todos os dias que eu abrisse minha pasta de trabalho fosse aberta a "Plan2", mas que esse evento só ocorresse uma vez que esse arquivo fosse aberto, e me voltasse ao normal por diante abrindo sempre a "Plan3".

Grato

Adriano
#7906
Exatamente isso fernandoazevedo.

Agora Adrian, aplicando essa sua ideia no meu código ficaria assim:
Código: Selecionar todos
Private Sub workbook_open()

If range("Plan3!AA1").value <> 1 then
     Sheets("Plan2").activate
     Range("Plan3!AA1").value = 1
Else
     Sheets("Plan3").activate
End If

End Sub
Só fica ligado que eu coloquei como referência a célula AA1 da Plan3 para checar o status se o arquivo já foi aberto ou não.
Desculpe a demora, :mrgreen: .

Att
Editado pela última vez por GabrielPeron em 23 Fev 2016 às 14:05, em um total de 2 vezes.
#7908
Boa tarde!!

Você pretende abrir o arquivo e a guia "Plan2" vai ser selecionada, se fechar o arquivo e abrir novamente a guia Plan3 que deve ser selecionada?

Se for isso já tentou armazenar o valor das vezes em que o arquivo foi aberto em uma célula?

Outra fonte próxima:
http://stackoverflow.com/questions/2438 ... ated-after

Att
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