Notifications
Clear all

acionar macro

12 Posts
3 Usuários
0 Reactions
2,069 Visualizações
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Boa Noite
Gostaria de uma ajudunha...
para agilizar meu trabalho preciso que a macro rode automaticamente ao preencher determinada celula ou ao teclar enter apor preencher a mesma
para nao ter que toda vez apertar o botao que aciona a macro.
Já tentei de varias formas e nao consegui.
Desde ja agradeço a atenção

 
Postado : 08/06/2017 6:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

nilson, é o seguinte, para se acionar uma rotina apos alterar uma celula, utilizamos o Evento da planilha Worksheet_Change onde definimos qual celula apos alteração executara alguma ação, neste caso a rotina abaixo para a Celula D8 :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$D$8" Then
        Call teste
    End If

End Sub

Só que em seu modelo você já está utilizando este evento, então se a intenção for mante-la deve alterar a rotina com os devidos ajustes com as devidas condições, lembrando que só se pode utilizar um Evento de mesmo tipo.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/06/2017 8:11 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimente:

Private Sub Worksheet_Change(ByVal Target As Range)
 'Plan1.Unprotect Password:="125812"
  If Target.Address = "$C$3" Then
   busca
  ElseIf Target.Address = "$D$8" Then
   teste
  End If
 'Plan1.Protect Password:="125812"
End Sub

Osvaldo

 
Postado : 09/06/2017 7:34 am
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Caro Osvaldo
Grato pela atenção
A macro rodou porém os dados nao estao indo para a (base) e sim para (venda)
poderia dar uma olhadinha?

 
Postado : 09/06/2017 5:02 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimente o código abaixo no lugar do atual.

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim cod As Range
  'Me.Protect "125812", UserInterFaceOnly:=True
  If Target.Address = "$C$3" Then
   Set cod = Sheets("config").[A:A].Find(Target.Value, lookat:=xlWhole)
    If cod Is Nothing Then MsgBox "Código não encontrado": Exit Sub
     With Me
      .[C4] = cod.Offset(, 1).Value: .[C5] = cod.Offset(, 2).Value: .[C6] = cod.Offset(, 3).Value
      .[K3] = cod.Offset(, 6).Value: .[K4] = cod.Offset(, 4).Value: .[K5] = cod.Offset(, 5).Value
     End With
  ElseIf Target.Address = "$D$8" Then
   With Sheets("Base").Cells(Rows.Count, 1).End(3)(2)
    .Value = [A2]: .Offset(, 1).Value = [C4]: .Offset(, 2).Value = [C5]: .Offset(, 3).Value = [B8]
    .Offset(, 4).Value = [C8]: .Offset(, 5).Value = [D8]: .Offset(, 6).Value = [E8]
    .Offset(, 7).Value = [F8]: .Offset(, 8).Value = [G8]: .Offset(, 9).Value = [H8]
   End With
' Range("b8:d8").ClearContents
 End If
End Sub

Osvaldo

 
Postado : 11/06/2017 11:10 am
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Ola Boa Noite
Substitui a macro, ela roda, porem não monta o banco de dados, apenas substitui os dados já lançados.

 
Postado : 11/06/2017 4:30 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

A macro funciona assim:
1. ao preencher 'C3' da planilha "Venda" o código insere nessa planilha os dados relativos ao valor inserido, buscados na planilha "config" - não é isso que você quer?

2. ao preencher 'D8' da planilha "Venda" o código replica os dados obtidos no item 1 acima descrito na planilha "Base" - não é isso que você quer?

Osvaldo

 
Postado : 11/06/2017 4:54 pm
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Boa Tarde
isso "C3" busca as informações em (config)
"D8" transfere esses dados para a planilha ("Base"), contudo esses dados precisam ser armazenados.
E está apenas substituindo os valores.
data operadora bandeira n cart nsu valor desc liquido comp banco
08/06/2017 Banese BANESE 0001 0001 5,00 0,12 4,88 08/07/2017 Banese (sequencia que deve ficar no banco de dados)
Rede Maestro 0002 0002 2,00 0,03 1,97 42899 Santander (quando lanço apenas substitui os que ja estao lançados)

 
Postado : 12/06/2017 1:56 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

... E está apenas substituindo os valores....
... (quando lanço apenas substitui os que ja estao lançados)

Amigão, você já disponibilizou neste tópico 3 versões diferentes da planilha "Venda".

O último código que passei foi com base na versão da planilha "Venda" que está no arquivo disponibilizado por você no post do dia 09 Jun 2017, 20:02. E é naquela versão que você deve testar o código.

Osvaldo

 
Postado : 12/06/2017 4:07 pm
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Grato pela atenção
Meu ilustre, foi exatamente nesta que testei,coloquei o código que generosamente me disponibilizou, reenviei com esse mesmo código, para que pudesse ver
como esta funcionando, o código roda perfeitamente, a questão que apenas substitui o dado existente não guarda os mesmos, a que disponibilizei nesta data ele roda, porém ao invés de transferir os dados em (base),transfere para a mesa (venda).

Mais uma vez agradeço a atenção
Desejo Saúde Paz e Sucesso

 
Postado : 12/06/2017 4:41 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

... foi exatamente nesta que testei,... reenviei com esse mesmo código...

Negativo! Verifique novamente célula por célula e você vai comprovar a diferença entre a planilha que eu citei e a que você "reenviou". E é exatamente por causa de uma das diferenças que o código não traz o resultado correto.

Osvaldo

 
Postado : 12/06/2017 5:52 pm
(@nilson1978)
Posts: 73
Trusted Member
Topic starter
 

Grato pela atenção
Mas realmente nao identifiquei e nao funcionou.
Minha falta de experiencia acabou nao me deixando ver onde esto errando, realmente agradeço a atenção e tempo dedicados a tentar me ajudar.

Desejo Saúde, Paz e Sucesso

 
Postado : 15/06/2017 7:19 pm