none
AJUDA COM HORA FIXA !! RRS feed

  • Pergunta

  • Ola! 
    Eu estou montando uma planilha a qual um funcionário deve preencher conforme o tempo, trata- se de uma verificação de hora e hora em que ele deve escrever em uma célula o que viu. 

    Bom um exemplo:

    as 9h ele viu um carro, então ele vai lá na célula das 9h e digita carro, logo após essa célula tem uma coluna escrita "HORA CONFERIDA" e é ai que entra o problema. Eu fiz uma condição usando a função "SE", se não conter informação não aparecera nada, mas a partir do momento em que ele preencheu, a hora ficara marcada, como se fosse pra verificar que ele olhou MESMO naquele horário. O problema é que o comando "AGORA" é volátil, ele ficara mudando a todo instante e agora é onde eu não sei proceder, como congelar a hora em que ele conferiu deixando o horário estático? 

    quarta-feira, 19 de julho de 2017 20:30

Respostas

  • Falha minha Vinícius.

    Para inserir o código global é preciso trocar a chamada da função:

    Private Sub Worksheet_Change(ByVal Target As Range)

    por:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    E caso apresente erro no "ActiveSheet", basta trocar por "Sh".

    Desculpe a falha.


    Filipe Magno

    sexta-feira, 28 de julho de 2017 17:18

Todas as Respostas

  • Eu não entendi onde se encaixa esse código no meu caso, vou lhe enviar em anexo o meu documento, se puder, de uma conferida, pois encontrei outro problema! Eu queria que a minha condição SE só funcionasse quando todas as células da linha fossem preenchidas e o meu código não está funcionando kkkk me ajuda por favor! 

    https://www.4shared.com/s/fk-OM--KHca 

    quinta-feira, 20 de julho de 2017 19:59
  • Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("a1") = CStr(Time)
    
    
    End Sub


    Anderson Diniz

    • Sugerido como Resposta AndersonFDiniz2 sábado, 22 de julho de 2017 12:24
    sábado, 22 de julho de 2017 12:24
  • Boa noite Vinícius.

    Para o que pediu basta colar este código dentro da sua planilha:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim Intervalo As Range, colHora As String
    
    Set Intervalo = ActiveSheet.Range("C10:AD33")        'Intervalo para monitorar
    colHora = "AE"                                      'Coluna para inserir a hora
    
    If Intersect(Target, Intervalo) Is Nothing Then Exit Sub
    
    ActiveSheet.Range(colHora & Intervalo.Row).Value = Time
    
    End Sub

    Obs.: note que este código é ativado por um evento, logo não pode ser alocado em um módulo comum, devendo necessariamente constar dentro da classe da planilha em questão ou em "Esta pasta de Trabalho", situação que passa a valer para todas as abas do arquivo.

    Caso deseje flexibilidade, a parametrização poderia ser feita em uma célula de uma planilha de controle.

    Importante: qualquer alteração em determinada coluna irá sobrescrever a hora na última coluna, independente se houve ou não a digitação de um valor diferente do que constava anteriormente.

    Abraço.


    Filipe Magno

    sexta-feira, 28 de julho de 2017 02:49
  • Ops, favor trocar:

    ActiveSheet.Range(colHora & Intervalo.Row).Value = Time

    Por:

    ActiveSheet.Range(colHora & Target.Row).Value = Time

    Sorry.


    Filipe Magno

    sexta-feira, 28 de julho de 2017 03:07
  • Tudo bem, eu fiz a correção e apliquei em "esta pasta de trabalho" para que funcionasse em todas as abas...  Agora como funciona este código? Pois, eu preencho, porém não ocorre nada, tenho que colocar alguma informação na coluna AE para que ocorra o evento? Ele já faz a condição SE, que verifica assim que toda linha de um determinado horário estiver preenchida, aplicar o horário que ele terminou de preencher?

    Atenciosamente,

    Vinicius Okamoto

    sexta-feira, 28 de julho de 2017 17:03
  • Falha minha Vinícius.

    Para inserir o código global é preciso trocar a chamada da função:

    Private Sub Worksheet_Change(ByVal Target As Range)

    por:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    E caso apresente erro no "ActiveSheet", basta trocar por "Sh".

    Desculpe a falha.


    Filipe Magno

    sexta-feira, 28 de julho de 2017 17:18
  • Sucesso! 

    Obrigado novamente pela força!

    Vinicius Okamoto

    sexta-feira, 28 de julho de 2017 17:40