
Estou usando o Excel 2007. Tenho um arquivo Excel que possui a célula A1 mostrando uma data e a célula B1 mostrando um valor na planilha 1. Preciso atualizar automaticamente a data em A1 e o valor B1 em um banco de dados na planilha 2. O banco de dados em a planilha 2 é um link para as células A1 e B1 na planilha 1 usando Vlookup escolhendo a data em A1 como o valor de pesquisa. O arquivo Excel é usado diariamente e o conteúdo das células A1 e B1 mudará diariamente. A folha 2 precisará registrar todas as datas e valores nas células A1 e B1 por um ano
Meu problema:
1. Como faço para construir meu banco de dados para capturar a data e o valor anteriores em A1 e B1 diariamente porque as datas em A1 continuam mudando à medida que são digitadas diariamente.
Por exemplo :-
Em 03/14/2015 (célula A1), o valor é de $ 3.333 na célula B1. Portanto, o banco de dados captura a data 14/3/2015 e $ 3.333 na planilha 2 do banco de dados.
No dia seguinte, 15/3/2015, o conteúdo da célula A1 foi alterado para 15/3/2015 e B1 mostra um valor de $ 5.555
Meu desafio é como mantenho as datas e o valor na planilha 2 em meu banco de dados, já que só consigo obter uma data e um valor para o dia atual.
Sinceramente não conheço VBA.
Responder1
Isso é apenas um pouco mais complicado porque você deseja copiar mais de duas células. Normalmente, você pode usar o Worksheet_Change
evento para capturar sempre que uma célula é alterada. No entanto, você deseja esperar até que ambas as células sejam alteradas. Em vez de impor alguma regra onde você tem que alterá-las na ordem correta e depois apenas observar a última célula, escrevi isso para esperar que a célula C1
mudasse. Minha ideia era que seus usuários pudessem editar A1
e B1
digitarqualquer coisaentrar C1
e o código seria acionado. Você pode usar a validação de dados para adicionar um menu suspenso C1
que tenha apenas uma opção como "Ir". O código abaixo copiará os valores de A1
& B1
para a última linha da planilha 2 sempre que o valor de C1
for alterado e, em seguida, limpará esse valor de C1
.
Abra o editor VBA ( Alt+ F11é um método). Procure a planilha 1 na janela Project Explorer à esquerda (ela já deve estar lá com um menu em árvore mostrando todas as pastas de trabalho abertas e as planilhas dentro delas). Clique duas vezes na planilha para abrir sua janela de código. Copie e cole o código abaixo: (talvez seja necessário editar a linha Worksheets("Sheet2")
se "Planilha2" não for o nome real da segunda planilha para a qual deseja que os dados sejam copiados.)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If Not Intersect(Target, Range("C1")) Is Nothing Then
With Worksheets("Sheet2")
r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & r).Value = Range("A1").Value
.Range("B" & r).Value = Range("B1").Value
End With
Application.EnableEvents = False
Range("C1").ClearContents
Application.EnableEvents = True
End If
End Sub
(Para os viciados em VBA: normalmente prefiro usar Cells
over Range
, mas não é tão compreensível instantaneamente, então optei por Range
.)
Responder2
Se você não conhece e não consegue aprender as ferramentas para realizar o trabalho, sua única alternativa é fazê-lo manualmente.
Em seguida, anote as etapas que você teve que executar manualmente - esse será o esboço de como automatizá-lo.
Em seguida, comece a pesquisar no Google como criar uma macro VBA simples que automatizará as etapas que você anotou.