Mauro, obrigado pelo empenho meu amigo.
Então, vou explicar o que preciso desde o zero.
Há um arquivo com duas Abas, vou chamar de Plan1 e Plan2.
Na plan1, há 1000 funcionários, cada um com seu cargo, salário, área, etc....
Quero fazer o seguinte:
1 - Vou escolher um funcionário. Como ? Bem, selecionando a celula onde esta seu nome.
Imagine que na linha 57, esta o funcionário de nome Marcelo, que é Analista Contábil.
Então, eu seleciono uma celula qualquer na linha 57. (por exemplo, selecionei a célula B57.
2 - Executar a macro.
3 - A macro pula da coluna ativa, para a coluna CARGO.
4 - Checa que cargo é este. (da celula ativa), (guarde o nome desde cargo numa variável. Neste exemplo, "Analista Contábil".
5 - Seleciona a Plan2
6 - Lista em Plan2, todos os funcionários, que tenham o cargo "checado". Neste caso, apenas quem for "Analista Contábil".
7 - Volte para Plan1, e selecione a mesma célula que estava celecionada, quando executei a macro. No caso, B57
Com as dicas que vocês me passaram, pegando um pouco de cada, eu cosegui fazer o que preciso. Esta tudo funcionando.
Só tive que dar umas "marretadas". No fundo, sei que há uma forma adequada de fazer o que preciso. Sei que vcs fariam de uma forma mais eficiente.
Mas, no fim, deu certo. Cheguei ao resultado e lhes sou muito grato pela ajuda.
Um grande abraço meu caro, valeu mesmo.
Renato, estou confuso, antes de continuar preciso entender o que pretende, estou me baseando somente em suposição :
No primeiro Post você pretendia :
1) Armazenar em uma Variável a Celula Ativa
2) Selecionar uma outra celula;
3) Apos Retornar a Celula que ficou armazenada na Variável.
Ok,. até ai, tanto a rotina que postei quanto ao do colega gtsalikis realizam este procedimento uma vez que esteja realizando alteração na propria aba.
Agora é que você complicou :
Estou na aba "Plan1", que é uma banco de dados com a relação de funcionários.
Vou rodar um código que pega o cargo do funcionário da linha ativa :
Você não havia comentado Cargo e sim Endereço da celula que é executado pela linha abaixo.
sCelAtiva = ActiveCell.Address(0, 0)
Vai para "Plan2" e lista na Plan2, todos os funcionários cadastrados na Plan1, que tem o mesmo cargo.
Não compreendi a questão de listar na Plan2 todos os funcionários cadastrados na Plan1, que tem o mesmo cargo.
"Agora vem o que eu preciso"
Na Plan2, coloquei um botão de VOLTAR para Plan1.
Quando eu apertar este botão, quero voltar para Plan1 e selecionar a célula que estava selecionada quando rodei a macro.
Nesta parte, como você saiu da Plan1 para a Plan2 sem ter efetuado nenhuma alteração na Plan1, ao retornar para Plan1 a Celula que vai estar selecionada é a celula que estava ativa quando saiu da mesma, não sendo necessário armazenarmos esta Variável.
Agora aqui você complicou mais ainda:
Esta na Plan2
Ao clicar num botão, ele pega o valor da range("k5"), vai para Plan1 e seleciona a célula cujo valor esta range("k5") lá da Plan2.
Como vai para Plan1 e seleciona o Valor que está em K5 se acima quer que vá para Plan1 e selecione a celula que estava ativa ?
Como pegar o valor digitado em K5, por ex: em K5, está digitado "D6". Então, ele lê o conteudo de K5, que no caso é "D6" e seleciona a célula D6.
Em K5, vai estar digitado o endereço da celula que deve ser selecionada.
Nesta parte vejo que não precisa mais da Variavel da celula que estava ativa na Plan1 uma vez que quer que vá para o endereço armazenado na celula da Plan2 - K5 = (D6), ficou estranho.
De qualquer forma para captar o valor em "K5" (D6) e utilizar este valor como referencia de Range pode utilizar as seguintes instruções:
Dim sRg_Plan2
Sheets("Plan2").Activate
sRg_Plan2 = Range("K5").Value
With Sheets("Plan1")
.Activate
Range(sRg_Plan2).Activate
End With
Como pode ver sua explicação está um pouco confusa, lembre-se de que você sabe o que quer e nós temos de procurar entender pois não lidamos com o aplicativo que está criando.
[]s
Postado : 30/09/2014 2:12 pm