我有几个带有多个条件的If语句,我想用它们做一个简单的计算,但我无法计算出输出。我认为这个问题与数据类型有关。
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按钮。
为了代码的可读性而编辑...
发布于 2019-01-31 22:53:44
我试着缩短代码。有什么建议吗?@QHarr @Comintern
选项显式
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
https://stackoverflow.com/questions/54462006
复制相似问题