首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用多条件If语句修复我得到的输出

如何用多条件If语句修复我得到的输出
EN

Stack Overflow用户
提问于 2019-01-31 21:46:21
回答 1查看 48关注 0票数 0

我有几个带有多个条件的If语句,我想用它们做一个简单的计算,但我无法计算出输出。我认为这个问题与数据类型有关。

代码语言:javascript
复制
Private Sub CommandButton24_Click()
Dim Transmit As Boolean
Dim StartTime As String
Dim EndTime As String
Dim RunTime As String
Dim messagebox As String
Dim i As Integer

i = 0
'conditions for startTime
While EtiLoggingNEW.Cells(i + 12, 1) = "Time"
    If (EtiLoggingNEW.Cells(i + 12, 6) = "Active" And EtiLoggingNEW.Cells(i + 12, 8) = "False" And Transmit = False) Then
        Transmit = True
        StartTime = EtiLoggingNEW.Cells(i + 12, 2)
    End If
    'conditions for endTime
    If ((EtiLoggingNEW.Cells(i + 12, 6) = "Standby" Or EtiLoggingNEW.Cells(i + 12, 6) = "Shutdown" Or EtiLoggingNEW.Cells(i + 12, 8) = "True") And Transmit = True) Then
        EndTime = EtiLoggingNEW.Cells(i + 12, 2)
        'Print EndTime, EtiLoggingNEW.Cells(i + 12, 15).Value
        Transmit = False
    End If

    RunTime = (EndTime - StartTime) * 86400

    messagebox = MsgBox(RunTime, vbOKOnly)
    i = i + 1
Wend
End Sub

我希望发生的是将RunTime打印到消息框中(或者理想情况下打印到第15列)。目前,消息框返回空白,只有vbaOK按钮。

为了代码的可读性而编辑...

EN

回答 1

Stack Overflow用户

发布于 2019-01-31 22:53:44

我试着缩短代码。有什么建议吗?@QHarr @Comintern

选项显式

代码语言:javascript
复制
Private Sub CommandButton24_Click()

    Dim Transmit As Boolean
    Dim StartTime As Date, EndTime As Date
    Dim RunTime As Long, i As Long

    i = 0

    With ThisWorkbook.Worksheets("EtiLoggingNEW")
        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 = .Cells(i + 12, 2)
            End If

            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)
                Debug.Print EndTime
                    .Cells(i + 12, 15).Value = EndTime
                Transmit = False
            End If

            RunTime = (EndTime - StartTime) * 86400

            MsgBox RunTime, vbOKOnly

            i = i + 1

        Wend

    End With

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54462006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档