Notifications
Clear all

Preenchimento automático de hora.

9 Posts
2 Usuários
0 Reactions
1,306 Visualizações
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Olá, possuo uma planilha de controle de fluxo e gostaria de saber se é possível fazer com que ao preencher o espaço destinado ao nome da pessoa, a célula que contém o horário de entrada ser preenchido automaticamente com a hora atual.
Como proceder?

 
Postado : 02/04/2013 1:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

No editor VBE, modulo da planilha "Controle" experimente:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then
    With Target
        If Cells(.Row, .Column) <> "" Then
            Cells(.Row, 6) = VBA.Format(Time, "hh:mm:ss")
        End If
    End With
End If
End Sub
 
Postado : 02/04/2013 1:32 pm
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Perfeito!!
Muito obrigado mesmo Reinaldo.

 
Postado : 02/04/2013 1:47 pm
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Só mais uma pergunta. Se eu trocar desse jeito, vai funcionar para data automática também? :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then
With Target
If Cells(.Row, .Column) <> "" Then
Cells(.Row, 2) = VBA.Format(Date "dd/mm/aa")
End If
End With
End If
End Sub

 
Postado : 02/04/2013 5:50 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Tente assim...

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then
With Target
If Cells(.Row, .Column) <> "" Then
.Cells(.Row, 2) = VBA.Format(Date, "dd/mm/yy")
End If
End With
End If
End Sub
 
Postado : 02/04/2013 5:54 pm
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Apareceu assim:

Erro de compilação:
Nome repetido encontrado: Worksheet_Change

 
Postado : 02/04/2013 6:08 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Eu não tive erro.

Verifique com tenção, talvez tenha dois eventos no corpo de código da planilha.

Att

 
Postado : 02/04/2013 6:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como o Alexandre disse, e possivel somente um evento Change em cada planilha, para carregar a data em uma celula e hora na outra:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 3 Then
        With Target
            If Cells(.Row, .Column) <> "" Then
                Cells(.Row, 6) = VBA.Format(Time, "hh:mm:ss")
                Cells(.Row, 2) = VBA.Format(Date, "dd/mm/yy")
            End If
        End With
    End If
    End Sub

Não deve utilizar ".Cells", pois a referencia with "carrega" os dados do Target e não da planilha.
Tambem as referencias a objetos e formatos, em VBA são sempre em ingles ; por isso deve utiliza dd/mm/yy (Day/month/year), e não dd/mm/aa (dia/mês/ano)

 
Postado : 03/04/2013 7:34 am
(@paulo_001)
Posts: 149
Estimable Member
Topic starter
 

Perfeito, está funcionando melhor que o esperado
Obrigado!

 
Postado : 04/04/2013 11:37 am