Как я могу напечатать окно сообщения в столбце? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть окно сообщения, выводящее разницу между двумя датами в минутах.Я хочу изменить это так, чтобы он печатал результат в столбце «O» в строке с «StartTime».

Любые предложения приветствуются!

Private Sub CommandButton24_Click()
    Dim Transmit As Boolean
    Dim StartTime As Date
    Dim EndTime As Date
    Dim RunTime As Date
    Dim messagebox As String
    Dim i As Integer

    i = 0
    'conditions for startTime
    While Cells(i + 12, 1) = "Time"
        If (Cells(i + 12, 6) = " Active" And Cells(i + 12, 8) = " False" And Transmit = False) Then
            Transmit = True
            StartTime = CDate(Cells(i + 12, 2))
        End If

        'conditions for endTime
        If ((Cells(i + 12, 6) = " Standby" Or Cells(i + 12, 6) = " Shutdown" Or Cells(i + 12, 8) = " True") And Transmit = True) Then
            EndTime = Cells(i + 12, 2)
            Transmit = False         
        End If            

        If (Cells(i + 12, 6) = "Active" And Cells(i + 12, 8) = "True" And Transmit = False) Then

        Else

        End If

        If StartTime = 0 Or EndTime = 0 Then

        Else
            messagebox = MsgBox((DateDiff("n", StartTime, EndTime)), vbOKOnly)
            StartTime = 0
            EndTime = 0
        End If

        i = i + 1
    Wend
End Sub

В настоящее время он печатает каждый результат вокно сообщения, когда я хочу его напечатать в строку StartTime.Спасибо!

1 Ответ

0 голосов
/ 11 февраля 2019

Попробуйте следующее:

Он запоминает StartTimeRow в переменной и затем использует его для вывода в этой строке позже.

Кроме того, поскольку вы всегда используете i + 12, вы можете простоначните с i = 12, а затем просто используйте i вместо i + 12 каждый раз.

Private Sub CommandButton24_Click()
    Dim Transmit As Boolean
    Dim StartTime As Date
    Dim EndTime As Date
    Dim RunTime As Date
    Dim messagebox As String
    Dim i As Long
    i = 12

    Dim StartTimeRow As Long

    'conditions for startTime
    While Cells(i, 1) = "Time"
        If (Cells(i, 6) = " Active" And Cells(i, 8) = " False" And Transmit = False) Then
            Transmit = True
            StartTime = CDate(Cells(i, 2))
            StartTimeRow = i '### Remember in which row start time was.
        End If

        'conditions for endTime
        If ((Cells(i, 6) = " Standby" Or Cells(i, 6) = " Shutdown" Or Cells(i, 8) = " True") And Transmit = True) Then
            EndTime = Cells(i, 2)
            Transmit = False         
        End If            

        If (Cells(i, 6) = "Active" And Cells(i, 8) = "True" And Transmit = False) Then

        Else

        End If

        If StartTime = 0 Or EndTime = 0 Then

        Else
            Cells(StartTimeRow, "O").Value = DateDiff("n", StartTime, EndTime)
            StartTime = 0
            EndTime = 0
        End If

        i = i + 1
    Wend
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...