Recentemente, comecei um novo trabalho. É uma posição de gerência e a empresa não tem muito em termos de departamento de TI. Como tal, tenho tentado criar minhas próprias ferramentas de gerenciamento. Meus colegas também têm medo do Access e não querem nenhum envolvimento em nada que eu crie através disso. A razão pela qual considero relevante mencionar isso é porque a solução mais óbvia para o meu problema atual é 'apenas use o Access', que eu posso ter que fazer caso aconteça que estou fora da minha profundidade aqui.
Uma das ferramentas nas quais estou trabalhando no momento é um plano de sucessão / matriz de habilidades. Em uma planilha, tenho uma lista de tarefas necessárias conforme a descrição do trabalho de um funcionário e se eles precisam ou não de treinamento.
Gostaria que toda a interação do usuário ocorresse em uma planilha de 'pesquisa', para que os dados do 'back-end' não sejam manipulados na fonte manualmente por ninguém, exceto por mim, se necessário. Após executar uma pesquisa, uma macro gravada copia, cola e formata um conjunto de fórmulas de Correspondência de Índice de outra planilha para apresentar os resultados. Nesse caso, uma lista de funcionários em que o treinamento completo é 'Não'.
A partir dos resultados desta lista, gostaria que o usuário pudesse selecionar a célula que deseja atualizar e clique em um botão para atualizar a célula de origem de um 'Não' para um 'Sim'. O abaixo foi o meu palpite sobre como conseguir isso. Não sei nada sobre VBA.
Sub updateyes()
SendKeys "(^[)"
Worksheets("Sheet1").Activate
ActiveCell.Value = "Yes"
Sheets("Search & Update").Select
Range("A6").Select
End Sub
A chave de envio por si só consegue mover-se para a célula de origem e selecioná-la. Como um todo, o código acima apenas atualiza a célula selecionada pela última vez manualmente na planilha 'back-end'.
Não consigo fazer com que o código faça referência a uma célula em particular, pois depende de qual célula está sendo selecionada no momento pelo usuário.
O que eu quero alcançar em resumo é o seguinte:
O usuário seleciona a célula para atualizar, clica no botão. A macro viaja para a célula de origem selecionada, atualiza de não para sim e retorna para a planilha de 'pesquisa'.
Fácil não? Pelas respostas que já tive, parece que posso estar fora do meu alcance. Muito obrigado antecipadamente.
fonte
Respostas:
Seu código é muito frágil
Select
eActivate
, além de fazer referência implícita à pasta de trabalho e à planilha ativas.Este será seu amigo:
Agora, em vez de selecionar e ativar coisas, use essas referências explícitas .
Em vez disso:
Faça isso:
(se é isso que seu código pretende fazer - não está muito claro o que deveria estar fazendo)
fonte