Notifications
Clear all

Subtrair Horas VBA

9 Posts
3 Usuários
0 Reactions
2,403 Visualizações
(@sacramento)
Posts: 4
New Member
Topic starter
 

Tenho em um Label1.Caption = 33:00 e Label2.Caption = 11:00. Tentei subtrair Label3.Caption = Label1.Caption - Label2.Caption, mas da erro.
Alguém tem uma sugestão para procedimento correto?

 
Postado : 27/10/2017 7:33 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Boa noite.
Veja se consegue adaptar à sua necessidade:

Dim slabel1 As String, slabel2 As String
Dim vdate1 As Date, vdate2 As Date
Dim vfinaldate As Date
vdate1 = CDate(Me.Label1.Caption)
vdate2 = CDate(Me.Label2.Caption)

        If vdate2 > vdate1 Then
        
                vfinaldate = vdate2 - vdate1
                
                Me.Label3.Caption = vfinaldate
                
        Else
                vfinaldate = (1 + vdate2) - vdate1
                
                Me.Label3.Caption = vfinaldate
        
        End If

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/10/2017 8:05 pm
(@sacramento)
Posts: 4
New Member
Topic starter
 

Deu erro em tempo de execução 13: Tipos incompatíveis

 
Postado : 27/10/2017 8:32 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Boa noite.
Creio que o seguinte irá ajudar...

http://www.tomasvasquez.com.br/forum/viewtopic.php?t=3963

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/10/2017 8:57 pm
(@sacramento)
Posts: 4
New Member
Topic starter
 

Obrigado pela atenção.
Vejo que na planilha as 33:00 fica como 01/01/1900 09:00:00, acho que o segredo esteja ai, nessa conversão
segue o arquivo

 
Postado : 27/10/2017 10:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente:

Private Sub CommandButton1_Click()
Dim Hora As Double, Minuto As Double
Tempo = (Val(Label1.Caption) / 24) - (Val(Label2.Caption) / 24)
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
Label3.Caption = Format(Hora, "00") & ":" & Format(Minuto, "00")

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

 
Postado : 28/10/2017 5:37 pm
(@sacramento)
Posts: 4
New Member
Topic starter
 

Perfeito Reinaldo, obrigado. Sabia que a saída estava naquela orientação sua, mas não tive tempo de trabalhar.

Muito obrigado, tenho certeza que vai ajudar muita gente no trato de hora no excel vba

Apenas um esclarecimento. Porque a utilização dessa "variável" Val??

 
Postado : 29/10/2017 9:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Val não e uma variavel, mas sim uma função de conversão de valores.
Normalmente o valor em um text ou label e "passado" como string/Texto, assim o uso de uma função de conversão para efetuar as contas.

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

 
Postado : 30/10/2017 11:11 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Verificando essa maneira que o Reinaldo criou para trabalhar com horas, acho que é inédita. Dá até ânimo de mexer com horas no vba agora vu :lol: :lol: :lol:

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

 
Postado : 04/11/2017 12:03 pm