Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Salvar referência de uma célula de uma planilha em outra p


rhbohrer

Pergunta

Bom dia caros,

Estou fazendo uma aplicação em VBA usando o Excel para cadastro de projetos com vários 'forms'

O primeiro 'form' chama-se frmCLIENTES que cadastra os dados do cliente

O segundo 'form' chama-se frmPROJETOS que cadastra os dados do projeto

Estou fazendo assim porque podem existir vários projetos para cada cliente.

Os dados do 'form' frmCLIENTES salva na planilha CLIENTES, e o 'form' frmPROJETOS salva na planilha PROJETOS.

No frmPROJETOS tenho uma ComboBox que lista o nome de todos os clientes cadastrados na planilha CLIENTES.

Quando eu salvo o projeto, o valor da ComboBox é salvo na coluna A da planilha PROJETOS.

Até ai tudo certo. O problema vem agora:

Eu não gostaria de salvar o valor da ComboBox, gostaria de salvar a referência da célula na planilha CLIENTES onde está localizado o respectivo cliente, ou seja, na coluna A da planilha PROJETOS salvar =CLIENTES!A2 ao invés do valor apresentado na ComboBox.

Por que isto? Porque quando eu editar o nome do cliente, os projetos associados tenha o registro também alterado de forma automática.

Alguém saberia me ajudar com qual linha de comando eu posso fazer isso?

A planilha CLIENTES está assim:

yhRefY.jpg

E gostaria que a planilha PROJETOS ficasse assim:

WGvgxE.jpg

Claro que no Excel a célula A2 em PROJETOS exibiria o valor "CLIENTE 1"

Obrigado.

Rafael.

Editado por rhbohrer
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu não sei se é a forma mais fácil, mas fiz da seguinte forma:

Gravei uma macro fazendo a pesquisa, depois selecionei a célula e copiei. Fui para a outra planilha e colei como vínculo.
Após editei a macro e ela ficou assim:

Sub VINCULO_CLIENTE_PROJETO()
' VINCULO_CLIENTE_PROJETO Macro

    'Seleciona a planilha CLIENTES
    Worksheets("CLIENTES").Select
    
    'Cria duas variáveis: varProcura recebe o valor da ComboBox BOX_NOME_CLIENTE e a varRegistros recebe a contagem de quantas linhas foram usadas na planilha CLIENTES
    varProcura = frmPROJETO.BOX_NOME_CLIENTE.Value
    varRegistros = Worksheets("CLIENTES").UsedRange.Rows.Count
    
    Range("B2:B" & varRegistros).Select 'Faz a seleção das linhas de B2 até ultima célula B com valor


    'Faz a procura usando a variável varProcura
    Selection.Find(What:=varProcura, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    
    'Move a célula ativa 1x para a direita e 1x para esquerda. Isso é para deixar selecionado somente a célula onde foi encontrado o nome
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Offset(0, -1).Select


    Selection.Copy 'Faz a cópia da selecão (CTRL + C)
End Sub

E quando clico no botão SALVAR, antes de gravar os outros dados dos campos do formulário, ele cola o vínculo na próxima célula livre

Private Sub BT_SAVE_PROJETO_Click()
    
    'Cria duas variáveis: varTotalRegProjeto armazena a quantidade de linhas usadas na planilha PROJETOS. varSalvaProjeto armazena o conteúdo da variável anterior e soma 1 para seleciona a linha logo abaixo da última com valor existente
    varTotalRegProjeto = Worksheets("PROJETOS").UsedRange.Rows.Count
    varSalvaProjeto = varTotalRegProjeto + 1


    VINCULO_CLIENTE_PROJETO 'Chama a macro de pesquisa 
    Worksheets("PROJETOS").Select 'Seleciona a planilha PROJETOS
    Cells(varSalvaProjeto, 1).Select 'Seleciona a célula na linha vazia e na primeira coluna
    ActiveSheet.Paste Link:=True 'Faz a colagem da cópia feita na macro em forma de vínculo
    
    'A partir daqui salva os demais campos, cada um em uma coluna específica mas na mesma linha.
    Cells(varSalvaProjeto, 2) = TEXT_NOME_PROJETO
    Cells(varSalvaProjeto, 3) = TEXT_CONTATO
    Cells(varSalvaProjeto, 4) = TEXT_TELEF_CONTATO
    Cells(varSalvaProjeto, 5) = TEXT_EMAIL_CONTATO
End Sub

Fiz assim e deu certo.

Como disse, não sei se é a mais fácil, mas como não encontrei nada na internet, quebrei a cabeça, mas consegui.

Se alguém tiver uma forma mais fácil, compartilha aí.

Editado por rhbohrer
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...