Formato Horas [LIST...
 
Notifications
Clear all

Formato Horas [LISTBOX]

7 Posts
2 Usuários
0 Reactions
2,758 Visualizações
(@porto)
Posts: 4
Active Member
Topic starter
 

Boa noite,

Estou tentando listar o resultado de uma busca em um banco de dados vba excel. Já procurei muito na net e não encontrei o que preciso.
Seria o seguinte:
1- Montei um Form de cadastro de horas de trabalho de cada funcionario, o mesmo já faz o calculo das horas trabalhadas, e lança na planilha.
2- Montei um Form de busca de dados desse cadastro, esse busca o nome do funcionário, a data do trabalho e as horas trabalhadas (que já estão na planilha no formato "hh:mm:ss). O resultado de cada campo se dá em listbox independentes.
O problema ocorre que quando abro o Form, a listbox "horas trabalhadas" retorna valores 0,270833333333 ao invés do formato de hora...

Obs.: No Form de cadastro ocorreu o mesmo erro no txt de horas, consegui corrigi-lo usando o codigo "txtTHoras2.Text = Format(txtTHoras2.Text, "hh:mm")"

Alguém tem allguma sugestão?

Grato,
Leandro Porto

 
Postado : 30/03/2014 5:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Alguém tem allguma sugestão?

Eu tenho duas dicas.

1º Use a pesquisa do Fórum!

2º Poste seu arquivo modelo compactado!

Att

 
Postado : 30/03/2014 5:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Porto, não é exatamente um erro, já que o Excel "arquiva" data e hora como números.
Se não "informar" ao txt ou listbox que determinado campo é data ou hora, então será mostrado o valor salvo.
A exemplo da formatação para o txt, essa mesma atividade deverá ser efetuada ao carregar/lista os itens no listbox
Seria algo como : seulistbox..ist(sualinhalistbox, suacolunalistbox)=format(Sheets(nomesuaplanilha).Cells(linhasuaplanilha, colunasuaplanilha),"hh:mm")

 
Postado : 31/03/2014 5:18 am
(@porto)
Posts: 4
Active Member
Topic starter
 

Boa noite!!

Alguém tem allguma sugestão?

Eu tenho duas dicas.

1º Use a pesquisa do Fórum!

2º Poste seu arquivo modelo compactado!

Att

1º Passei o fim de semana todo pesquisando na internet, inclusive no Fórum, mas não encontrei. Só postei a dúvida depois de tentar adaptar vários códigos que encontrei e não conseguir o resultado desejado.

2º Segue a planilha em anexo.

Grato pela atenção.

 
Postado : 31/03/2014 7:37 am
(@porto)
Posts: 4
Active Member
Topic starter
 

Porto, não é exatamente um erro, já que o Excel "arquiva" data e hora como números.
Se não "informar" ao txt ou listbox que determinado campo é data ou hora, então será mostrado o valor salvo.
A exemplo da formatação para o txt, essa mesma atividade deverá ser efetuada ao carregar/lista os itens no listbox
Seria algo como : seulistbox..ist(sualinhalistbox, suacolunalistbox)=format(Sheets(nomesuaplanilha).Cells(linhasuaplanilha, colunasuaplanilha),"hh:mm")

Reinaldo,

Inseri esse código, mas não funcionou... pode ser que tenha colocado no lugar errado. A planilha que enviei no comentário acima já está com a linha que você sugeriu, inserida na linha 95 do Formulário "frmBusca".

 
Postado : 31/03/2014 7:42 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sem entrar no mérito do porque é carregado dessa maneira; mas deve ser alterado em todas as instâncias onde aparece listbox2/3/6

Private Sub PreencheLista()
    Dim Agenda As Worksheet
    Dim linha As Integer
    Dim TextoCelula As String
    Set Agenda = ThisWorkbook.Worksheets("Dados")
    linha = 2
    ListBox1.Clear
    ListBox2.Clear
    ListBox3.Clear
    ListBox4.Clear
    ListBox5.Clear
    ListBox6.Clear
    
    With Agenda
        While .Cells(linha, 1).Value <> Empty
            TextoCelula = .Cells(linha, 6).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                
                ListBox1.AddItem .Cells(linha, 6)
                ListBox2.AddItem Format(.Cells(linha, 10), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 11), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 7), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 13).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 13)
                ListBox2.AddItem Format(.Cells(linha, 17), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 18), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 14), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 20).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 20)
                ListBox2.AddItem Format(.Cells(linha, 24), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 25), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 21), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 27).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 27)
                ListBox2.AddItem Format(.Cells(linha, 31), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 32), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 28), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 34).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 34)
                ListBox2.AddItem Format(.Cells(linha, 38), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 39), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 35), "HH:MM")
            End If
            
            TextoCelula = .Cells(linha, 41).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 41)
                ListBox2.AddItem Format(.Cells(linha, 45), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 46), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 42), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 48).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 48)
                ListBox2.AddItem Format(.Cells(linha, 52), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 53), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 49), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 55).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 55)
                ListBox2.AddItem Format(.Cells(linha, 59), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 60), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 56), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 62).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 62)
                ListBox2.AddItem Format(.Cells(linha, 66), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 67), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 63), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 69).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 69)
                ListBox2.AddItem Format(.Cells(linha, 73), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 74), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 70), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 76).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 76)
                ListBox2.AddItem Format(.Cells(linha, 80), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 81), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 77), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 83).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 83)
                ListBox2.AddItem Format(.Cells(linha, 87), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 88), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 84), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 90).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 90)
                ListBox2.AddItem Format(.Cells(linha, 94), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 95), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 91), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 97).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 97)
                ListBox2.AddItem Format(.Cells(linha, 101), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 102), "hh:mm")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 98), "hh:mm")
            End If
            
            TextoCelula = .Cells(linha, 104).Value
            If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
                ListBox1.AddItem .Cells(linha, 104)
                ListBox2.AddItem Format(.Cells(linha, 108), "hh:mm")
                ListBox3.AddItem Format(.Cells(linha, 109), "HH:MM")
                ListBox4.AddItem .Cells(linha, 2)
                ListBox5.AddItem .Cells(linha, 4)
                ListBox6.AddItem Format(.Cells(linha, 105), "hh:mm")
            End If
            
           linha = linha + 1
        Wend
    End With
End Sub
 
Postado : 31/03/2014 8:31 am
(@porto)
Posts: 4
Active Member
Topic starter
 

Era isso mesmo que eu precisava Reinaldo, obrigado.

Com relação ao modo que são listados os dados, é porque não tenho muita (ou nenhuma) experiência em trabalhar com matrizes... mas ficaria bem melhor com elas, certo?
Você tem alguma sugestão?

Novamente obrigado pela ajuda.

 
Postado : 31/03/2014 9:54 am