none
Exibir horas em formulário RRS feed

  • 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:mmTongue Tieds")

    -> 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" (Cool:mmTongue Tieds). 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

    segunda-feira, 1 de outubro de 2007 14:59

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.
    segunda-feira, 1 de outubro de 2007 16:21
  • 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...

    quarta-feira, 3 de outubro de 2007 23:31
  • Oi Rafael,

     

    use a função FormatInterval disponível aqui: http://support.microsoft.com/kb/186425

     

    domingo, 7 de outubro de 2007 16:58
    Moderador
  • 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:mmTongue Tieds")

    End Sub

    quarta-feira, 24 de outubro de 2007 17:29

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.
    segunda-feira, 1 de outubro de 2007 16:21
  • 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...

    quarta-feira, 3 de outubro de 2007 23:31
  • Oi Rafael,

     

    use a função FormatInterval disponível aqui: http://support.microsoft.com/kb/186425

     

    domingo, 7 de outubro de 2007 16:58
    Moderador
  • 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:mmTongue Tieds")

    End Sub

    quarta-feira, 24 de outubro de 2007 17:29