Ir ao conteúdo

Excel executar macro ao mudar valor da celula


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Senhores, bom dia! mais uma vez precisando muito da ajuda de vocês.

Tenho uma planilha onde preencho hora inicio / hora final / executor/ data inicio e data termino

minha intenção seria:

preencher a celula do executor ( pelo login do usuario)

preencher a data inicio (data atual formato dd/mmm)

sendo que preciso preencer a celula C2 com um horario a C3 com outro horario e assim até o final da planilha

 

pesquisando na internet, consegue ate chegar em algo parecido do que eu preciso, porém fica limitado a uma unica celula e tenho varias celulas na mesma planilha onde faço o preenchimento.

em anexo o arquivo até onde cheguei.

 

ao colocar horario na celula C2 ==> preenche a celula K2 com o login do usuario.

na celula F2 tem a formula =SEERRO((PROCV(K2;ANALISTAS!$A$2:$B$30;2;0));"")

 

segue abaixo o codigo que consigui até o momento.

 

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$2" Then
        Call userid_C2
        Call data_C2
        Exit Sub
   End If
End Sub
Private Sub userid_C2()
    Dim wshNetwork As Object
    Dim LogonName As Variant
        Set wshNetwork = CreateObject("WScript.Network")
        LogonName = "" & wshNetwork.UserName
        Range("K2").Value = LogonName
End Sub
Private Sub data_C2()
Dim Data As Date
    Data = Now()
Range("G2").Value = Data
'ActiveCell.Select
'ActiveCell.Offset(0, 4).Value = Data
End Sub

 

FECHAMENTO_MENSAL.rar

  • Membro VIP
Postado

Caso queira que userID_C2() e data_C2() sejam executados ao alterar qualquer célula, simplesmente remova a condicional do address. Assim, ficaria:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Call userid_C2
Call data_C2
End Sub

Postado

caro Haner, obrigado pelo retorno!

 

Tambem havia pensando nessa posibilidade. porém:

para cada linha, tenho um horario diferente, e da forma sugerida por voce, que tambem ja tentei, limito o user_id e data somente na celula F2 e G2

Preciso que quando coloque horario na celula c3 preencha na F3 (executor) e G3 (data)

Talvez algo que eu tenha esquecido de comentar e faz muito diferenca, a planilha pode ser utilizada por outros usuarios.

  • Membro VIP
Postado

Primeiro, a solução que eu propus gerava um loop infinito porque cada alteração de célula gera uma nova alteração de célula. Dessa forma, ignore-a completamente.

 

Você precisa que as macros sejam executadas ao alterar um intervalo específico (imagino que toda coluna C) e precisa que as informações de executor e data sejam inseridas nas colunas F e G de linha correspondente a do preenchimento na C, é isso?

  • Solução
Postado
19 minutos atrás, Janilson Brito disse:

Preciso que quando coloque horario na celula c3 preencha na F3 (executor) e G3 (data)

 

Experimente:

 

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 3 Then Exit Sub
 Cells(Target.Row, 6) = Application.UserName
 Cells(Target.Row, 7) = Date
End Sub

 

Postado

Muito obrigado pelo apoio, era exatamente o que eu precisava.

Adaptei o código que o OsvaldoMP disponibilizou e funcionou do jeito que eu estava imaginando.

Muito obrigado pelo apoio mesmo.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...