Usuário com melhor resposta
Exibir horas em formulário

Pergunta
-
Bom Dia.
Não estou conseguindo resolver um problema de exibição de uma hora num formulário. Através de um formulário que eu criei, a pessoa pode inputar a quantidade de horas e minutos de uma determinada atividade. Ao cadastrar, estas informações são armazenadas numa pasta específica corretamente.
O problema é que, ao solicitar no formulário para consultar os dados, este campo hora exibe uma informação diferente da cadastrada anteriormente. Exemplo:
1) A pessoa cadastra 150 horas, 0 minutos -> 150:00:00
2) Ao consultar, é exibido o valor de horas como seis horas -> 06:00
Para exibir esta hora, eu atribuo o valor armazenado na sheet em uma variável do tipo data.
-> Tentei formatar a hora antes de exibir no formulário, usando o comando format(hora,"hh:mm
s")
-> Tentei também armazenar numa variável do tipo string, porém a "mudança" de valor continua a mesma (exibe 06 horas ao invés de 150 horas).
Verifiquei o formato da célula e percebi que ela só exibe o valor de 150 horas (150:00:00) quando está num formato "personalizado" (
:mm
s). Se eu altero o formato desta célula para hora ou texto, ela exibe 06:00:00 e não mais 150:00:00.
Alguém sabe como devo tratar isto? Como posso exibir a quantidade de horas no formulário "corretamente"?
Agradeço desde já.
Rafael
Respostas
-
Se precisar trabalhar com horas acima de 23:59, selecione a célula em questão, escolha Formatar / Células, marque a categoria Hora no painel da esquerda e, no painel Tipo, selecione o sétimo formato disponível (“37:30:55”). Clique OK para confirmar.
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
Rafael...
Se vc está trazendo as 150:00 do formulário, traga-a armazenando numa varíável string..assim a variável data não formata para o jeito convencional...
caso seja possível ainda, referencie o valor diretamente, sem passar por variável (ae eu garanto que dê certo)...
faça os testes e retorne os resultados,
Abração...
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
Rafael:
Caso ainda precise desta informação, estou enviando um exemplo.
Primeiro vamos lembrar que o excel grava os dias como numeros e as horas e minutos como frações destes números.
Coloquei uma Textbox, um botão e estou usando uma célula com as horas que você mencionou.
Entenda como recuperar as horas armazenadas.
Private Sub CommandButton1_Click()
Dim strDate As String
Dim dtDate As Date
Dim hr As Integer'Marca as 150 horas para teste
ActiveSheet.Cells(1, 1) = "152:00:00"
'Forma que retorna as 152 horas do sistema
dtDate = ActiveSheet.Cells(1, 1).Value
'Se dia maior que "1/1/1900" - isto é, mais de 24 horas
If CInt(Sheet1.Cells(1, 1).Value) > 1 Then
'multiplica horas pelos dias (24 x dias)
hr = CInt(ActiveSheet.Cells(1, 1).Value) * 24
'subtrai as horas recuperadas
dtDate = DateAdd("d", -CInt(ActiveSheet.Cells(1, 1).Value), dtDate)
End If
'adiciona as horas que restaram a string
strDate = hr + Hour(dtDate) & ":" & Format(Minute(dtDate), "00") & ":" & Format(Second(dtDate), "00")
'mostra horas
TextBox1.Value = Format(strDate, "hh:mms")
End Sub
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
Todas as Respostas
-
Se precisar trabalhar com horas acima de 23:59, selecione a célula em questão, escolha Formatar / Células, marque a categoria Hora no painel da esquerda e, no painel Tipo, selecione o sétimo formato disponível (“37:30:55”). Clique OK para confirmar.
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
Rafael...
Se vc está trazendo as 150:00 do formulário, traga-a armazenando numa varíável string..assim a variável data não formata para o jeito convencional...
caso seja possível ainda, referencie o valor diretamente, sem passar por variável (ae eu garanto que dê certo)...
faça os testes e retorne os resultados,
Abração...
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48
-
Rafael:
Caso ainda precise desta informação, estou enviando um exemplo.
Primeiro vamos lembrar que o excel grava os dias como numeros e as horas e minutos como frações destes números.
Coloquei uma Textbox, um botão e estou usando uma célula com as horas que você mencionou.
Entenda como recuperar as horas armazenadas.
Private Sub CommandButton1_Click()
Dim strDate As String
Dim dtDate As Date
Dim hr As Integer'Marca as 150 horas para teste
ActiveSheet.Cells(1, 1) = "152:00:00"
'Forma que retorna as 152 horas do sistema
dtDate = ActiveSheet.Cells(1, 1).Value
'Se dia maior que "1/1/1900" - isto é, mais de 24 horas
If CInt(Sheet1.Cells(1, 1).Value) > 1 Then
'multiplica horas pelos dias (24 x dias)
hr = CInt(ActiveSheet.Cells(1, 1).Value) * 24
'subtrai as horas recuperadas
dtDate = DateAdd("d", -CInt(ActiveSheet.Cells(1, 1).Value), dtDate)
End If
'adiciona as horas que restaram a string
strDate = hr + Hour(dtDate) & ":" & Format(Minute(dtDate), "00") & ":" & Format(Second(dtDate), "00")
'mostra horas
TextBox1.Value = Format(strDate, "hh:mms")
End Sub
- Sugerido como Resposta Hezequias VasconcelosModerator domingo, 14 de outubro de 2012 23:03
- Marcado como Resposta Hezequias VasconcelosModerator terça-feira, 16 de outubro de 2012 16:48