Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Registro Entrada e Hora Extra

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Registro Entrada e Hora Extra

Mensagem por Valderei »

Olá pessoal, tudo bem.
Preciso de mais uma ajuda dos senhores com duas questões de VBA.
Como todos sabemos, trabalhar com horas e datas no #excel é sempre um pouco mais complicado do que parece.
Eu tenho um formulário, onde registro alguns atendimentos de pós-vendas onde trabalho e gostaria de poder controlar as horas dispendidas nestes trabalhos, minha ideia é a seguinte:

01 textbox registra a entrada pela manhã;
01 textbox registra a saída do almoço;
01 textbox registra a entrada da tarde;
01 textbox registra a saída do fim do dia;
01 textbox registra a soma destes horários e outro fará a contagem das horas extras.

Imagem

Algumas coisas já estão andando, a parte de entradas e saídas, porém preciso fazer algo que, ao passar de 08:48 horas, seja exibido este valor excedido no textbox de hora extra.

Vou compartilhar um arquivo, onde estão as textboxes e os códigos que montei até o momento.
Outra situação, é que no textbox de saída para almoço, se colocar 12:00, o excel entende como meia noite e fica 00:00, alguém sabe como resolver isso, mas sem adicionar o AM/PM?

Obrigado e desculpe pelo textão!!!
Anexos
Registro Ponto.rar
(13.46 KiB) Baixado 871 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Re: Registro Entrada e Hora Extra

Mensagem por Valderei »

Boa noite pessoal!!
Desculpe ser chato e insistente, mas alguém tem uma ideia de como contornar minha situação?
Obrigado.


Avatar do usuário
Rafael Monteiro
Consultor
Consultor
Mensagens: 277
Registrado em: Seg Nov 28, 2011 8:27 am
Localização: Sorocaba - SP
Contato:

Re: Registro Entrada e Hora Extra

Mensagem por Rafael Monteiro »

Boa noite Valderei, eu já montei um projeto de cálculo de horas. Entrada, almoço, retorno e Saída. E tinha também o cálculo de hora extra. Posso lhe passar umas ideias. Amanhã te dou um retorno.
ABS.


Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Re: Registro Entrada e Hora Extra

Mensagem por Valderei »

Olá Rafael, muito obrigado pelo retorno.
Sei que o Excel eh um tanto "chato" para trabalhar com horas, ficarei muito agradecido pela sua ajuda.

Abraço .


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Registro Entrada e Hora Extra

Mensagem por Reinaldo »

Não entendi sua demanda:
"...ao passar de 08:48 horas..."
Em que momento essa "comparação" deve ser feita?
Se o valor for maior que o esperado; por exemplo 8:52; o que fazer ? TextTotal= 8:48 e textExtra= 0:04?
"... se colocar 12:00..."
Não consegui reproduzir o reportado, em seu modelo digitando 12:00, o text permanece como 12:00

Como é feita sua entrada de dados?


Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Re: Registro Entrada e Hora Extra

Mensagem por Valderei »

Reinaldo, boa noite.
Então, no exemplo eu apenas deixei a parte do código que estou montando, mas a base toda, é feita sobre o modelo do Tomás.
Desta forma, sempre que digito "12:00", ele é exibido no textbox, porém ao salvar na planilha e reabrir o formulário, o horário altera para "00:00".

Sobre o Textbox de hora extra, a resposta é sim, eu gostaria que ele já assumisse os valores superiores à 08:48, conforme você postou:
Textbox01 = 08:52
Textbox02: 00:04

Montei algo que poderá ajudar, ele já tem os dados na planilha e carrega os mesmos para ela, onde pode ser visto o erro das 12:00 horas.

Reinaldo, obrigado por tirar este tempo para me responder.
Anexos
Registro Ponto - Vs.02.rar
(22.21 KiB) Baixado 764 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Registro Entrada e Hora Extra

Mensagem por Reinaldo »

experimente

"...e reabrir o formulário..."
altere a linha o retorno da planilha (para o item com "problema" ou todos de horas)
de Me.TextBoxSaida01.Text = .Cells(indiceRegistro, colSaida01).value
para:Me.TextBoxSaida01.Text = TimeValue(.Cells(indiceRegistro, colSaida01).Text)
Para as horas experimente:
altere rotina TextBoxSaida02_Exit para:

Código: Selecionar todos

Private Sub TextBoxSaida02_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBoxSaida02.Text <> vbNullString Then
        TextBoxSaida02.Text = Format(CDate(TextBoxSaida02.Text), "hh:mm")
    Else: TextBoxSaida02.Value = "00:00"
    End If
End Sub
adicione a seguinte rotina:

Código: Selecionar todos

Private Sub TextBoxSaida02_AfterUpdate()
Dim horasDecorridas As String
    'Efetuar diferença entre hora de saida e hora de entrada, descontando o intervalo
horasDecorridas = TimeValue(TextBoxSaida02.Text) - TimeValue(TextBoxEntrada02.Text) + (TimeValue(TextBoxSaida01.Text) - TimeValue(TextBoxEntrada01.Text))
    TextBoxHora01.Text = Format(horasDecorridas, "hh:mm")
End Sub{/code]

altere a rotina TextBoxHora01_Change conforme abaixo
[code]Private Sub TextBoxHora01_Change()
    If TextBoxHora01.Text <> vbNullString Then
        If TimeValue(TextBoxHora01) > TimeValue("08:48") Then
            TextBoxExtra01 = Format(TimeValue(TextBoxHora01.Text) - TimeValue("08:48"), "hh:mm")
            TextBoxHora01.Text = "08:48"
        End If
    Else
        TextBoxHora01.Text = Format(CDate(TextBoxHora01.Text), "hh:mm")
    End If
End Sub


Avatar do usuário
Valderei
Colaborador
Colaborador
Mensagens: 47
Registrado em: Qui Dez 27, 2012 9:57 pm
Localização: Caxias do Sul - RS

Re: Registro Entrada e Hora Extra

Mensagem por Valderei »

Reinaldo escreveu: Sex Set 06, 2019 5:21 pm experimente

"...e reabrir o formulário..."
altere a linha o retorno da planilha (para o item com "problema" ou todos de horas)
de Me.TextBoxSaida01.Text = .Cells(indiceRegistro, colSaida01).value
para:Me.TextBoxSaida01.Text = TimeValue(.Cells(indiceRegistro, colSaida01).Text)
Para as horas experimente:
altere rotina TextBoxSaida02_Exit para:

Código: Selecionar todos

Private Sub TextBoxSaida02_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBoxSaida02.Text <> vbNullString Then
        TextBoxSaida02.Text = Format(CDate(TextBoxSaida02.Text), "hh:mm")
    Else: TextBoxSaida02.Value = "00:00"
    End If
End Sub
adicione a seguinte rotina:

Código: Selecionar todos

Private Sub TextBoxSaida02_AfterUpdate()
Dim horasDecorridas As String
    'Efetuar diferença entre hora de saida e hora de entrada, descontando o intervalo
horasDecorridas = TimeValue(TextBoxSaida02.Text) - TimeValue(TextBoxEntrada02.Text) + (TimeValue(TextBoxSaida01.Text) - TimeValue(TextBoxEntrada01.Text))
    TextBoxHora01.Text = Format(horasDecorridas, "hh:mm")
End Sub{/code]

altere a rotina TextBoxHora01_Change conforme abaixo
[code]Private Sub TextBoxHora01_Change()
    If TextBoxHora01.Text <> vbNullString Then
        If TimeValue(TextBoxHora01) > TimeValue("08:48") Then
            TextBoxExtra01 = Format(TimeValue(TextBoxHora01.Text) - TimeValue("08:48"), "hh:mm")
            TextBoxHora01.Text = "08:48"
        End If
    Else
        TextBoxHora01.Text = Format(CDate(TextBoxHora01.Text), "hh:mm")
    End If
End Sub

Reinaldo, boa tarde.
Acabo de testar sua instrução e funcionou perfeitamente!!!
Meus parabéns e muito obrigado por ter me ajudado com este dilema...


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder