Как исправить отрицание в сумме двух текстовых полей, вовлекающих время - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть пользовательская форма, в которой есть два текстовых поля, в которых пользователь вводит время простоя и помещает его в список, теперь в этой же пользовательской форме у меня есть другое отключенное текстовое поле, которое отображает общую сумму всех чисел в минутах из этих двухИногда код работает хорошо, проблема заключается, например, в том, что: пользователь вводит 2300 в текстовое поле «txtTStart» и 0010 в «txtTEnd», он приносит число -1370.У меня вопрос, как я могу получить правильную сумму для этого метода.

Private Sub cmdNext_Click()

Dim x As Integer
Dim totaldt As Double
Dim r As Long
Dim tdt As Double
Dim tdtt As Double

If Trim(Me.txtTStart.Value) = "" Then
    Me.txtTStart.SetFocus
    MsgBox "Please Enter Time Start"
    Exit Sub
End If
If Trim(Me.txtTEnd.Value) = "" Then
    Me.txtTEnd.SetFocus
    MsgBox "Please Enter Time End"
    Exit Sub
End If
If Trim(Me.cmbCode.Value) = "" Then
    Me.cmbCode.SetFocus
    MsgBox "Please Enter Downtime Code"
    Exit Sub
End If
If Trim(Me.txtDesc.Value) = "" Then
    Me.txtDesc.SetFocus
    MsgBox "Please Enter Downtime Description"
    Exit Sub
End If
If Trim(Me.txtDesc.Value) = "INVALID DOWNTIME CODE" Then
    Me.txtDesc.SetFocus
    MsgBox "Please Insert Valid Downtime Code"
    Exit Sub
End If

    tdt = Format((CDate(txtTEnd.Value) - CDate(txtTStart.Value)) * 1440)

tdtt = Round(tdt)

x = lstDes.ListCount

With lstDes
         .AddItem
         .List(x, 0) = txtTStart.Value
         .List(x, 1) = txtTEnd.Value
         .List(x, 2) = tdtt
         .List(x, 3) = cmbCode.Value
         .List(x, 4) = txtDesc.Value

End With

totaldt = 0
With lstDes
    For r = 0 To .ListCount - 1
        totaldt = totaldt + .List(r, 2)
    Next r
End With

txtDT.Value = totaldt


Me.txtTStart.Value = ""
Me.txtTEnd.Value = ""
'Me.txtTot.Value = ""
Me.cmbCode.Value = ""
Me.txtDesc.Value = ""

End Sub

1 Ответ

0 голосов
/ 20 декабря 2018

добавьте эту строку: if tdt<0 then tdt=tdt+1440 в свой код после строки:

tdt = Format((CDate(txtTEnd.Value) - CDate(txtTStart.Value)) * 1440)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...