Notifications
Clear all

Somar coluna listbox

5 Posts
2 Usuários
0 Reactions
2,338 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom tarde galera,
Estou com uma dúvida de como somar os dados de uma listbox no fomato hora "hh:mm:ss".

O código abaixo está somando a 6 coluna da listbox, porém não está no formato correto.

Essa list vem com dados do access que está no formato HORA COMPLETA.

Dim lItem As Double
Dim valor As Double

lb_tempo_total.Caption = 0
For lItem = 0 To lista_pausas.ListCount - 1
    valor = lista_pausas.List(lItem, 6) * 1
    lb_tempo_total = (lb_tempo_total.Caption) + (valor)
    Next

Alguém poderia de ajudar como formatar a label?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/04/2012 11:30 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Altere o tipo da variável para Date, deve funcionar!

Dim lItem As Date
Dim valor As Date

lb_tempo_total.Caption = 0
For lItem = 0 To lista_pausas.ListCount - 1
    valor = lista_pausas.List(lItem, 6) * 1
    lb_tempo_total = (lb_tempo_total.Caption) + (valor)
    Next

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/04/2012 11:59 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não entendi bem o que seria: "está no formato HORA COMPLETA"
Como na linha valor e multiplicado por um, creio que receba o dado como string e está multiplicando para obter numerico.
Hora assim como data não é transformada diretamente; então se recebe uma string deve "converte-la" utilizando TimeValue ou mesmo CDate.
Depois se a soma for maior que 24 hs, seu label vai provavelmente "mostrar" algo parecido com "01/01/1900 01:12:18"
Terá que fazer uma conversão; se tiver, então tente adaptar o codigo:

Sub AchaHora()
tempo = CDec(TimeValue(Sheets("Plan1").Range("B2").Value) + TimeValue(Sheets("Plan1").Range("B3").Value))
hora = Int(tempo * 24) ' calculada qtas horas
Minuto = Int((tempo * 24 - Int(tempo * 24)) * 60) 'calculado qtde minutos
segundo = ((tempo * 24 - Int(tempo * 24)) * 60 - Int((tempo * 24 - Int(tempo * 24)) * 60)) * 60
MsgBox Format(hora, "00") & ":" & Format(Minuto, "00") & ":" & Format(segundo, "00") 'Format(h3 * 24, "#0.0")
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/04/2012 2:50 pm
(@ede-bueno)
Posts: 1
New Member
 

pra mim aparece tipos incompatíveis e essa linha " valor = lstLista.List(lItem, 9) * 1 " aparece em amarelo

 
Postado : 14/06/2012 11:14 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Ede,

Se o seu problema for esse relatado aqui: http://www.tomasvasquez.com.br/forum/viewtopic.php?f=20&t=1958

Use a instrução:

Sub Somar()
Dim lItem As Double
Dim Total As Double
For lItem = 0 To lstLista.ListCount - 1
If IsNumeric(lstLista.List(lItem, 9)) = True Then
        Total = Total + CDbl(lstLista.List(lItem, 9))
TextBox1 = Total
End If
Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/06/2012 8:41 pm