【问题标题】:VBA If time is between two timesVBA如果时间在两次之间
【发布时间】:2012-03-08 07:17:53
【问题描述】:
i = 1    
For Each cell In Range("D1:D10000")
  If IsEmpty(cell.Value) Then Exit For

  Select Case Range("N" & i).Value
    Case 0 To 40
      startTime  = "13:00"
    Case 40 To 60
      secondTime = Range("V" & i).Value
    Case 60 To 100
      finalTime = Range("V" & i).Value
    Case Else

   End Select

  Dim startTime As Date
  Dim secondTime As Date
  Dim finalTime As Date
  Dim timeRef As Date
  timeRef = Range("V" & i).Value

  If timeRef >= startTime And timeRef < secondTime Then 

  ElseIf timeRef >= secondTime And timeRef < finalTime Then

  ElseIf timeRef > finalTime Then

  End If
  i = i + 1
Next

好的,所以我使用上面的方法来尝试比较格式为日期的时间。它们都是从自定义格式为“hh:mm”的工作表中获取的,但我似乎没有时间落在最后的elseif

啊!

【问题讨论】:

    标签: vba date time compare


    【解决方案1】:

    您是在分配给它们之后声明这些值(startTimesecondTimefinalTime)。至少,您需要更改代码以声明然后分配。 (另外,你的第一个 if 语句是错误的;第一个测试应该只是 If timeRef &lt; secondTime。)

    ' Declare variables before assigning values to them
    Dim startTime As Date
    Dim secondTime As Date
    Dim finalTime As Date
    Dim timeRef As Date
    
    i = 1    
    For Each cell In Range("D1:D10000")
      If IsEmpty(cell.Value) Then Exit For
    
      Select Case Range("N" & i).Value
        Case 0 To 40
          startTime  = "13:00"
        Case 40 To 60
          secondTime = Range("V" & i).Value
        Case 60 To 100
          finalTime = Range("V" & i).Value
        Case Else
          ' You should do something here; what if the cell is empty or invalid?
          ' You end up with no value assigned to anything when leaving the Select
       End Select
    
      timeRef = Range("V" & i).Value
    
      If timeRef < secondTime Then 
    
      ElseIf timeRef >= secondTime And timeRef < finalTime Then
    
      ElseIf timeRef > finalTime Then
    
      End If
      i = i + 1
    Next
    

    由于我没有要测试的任何数据,我不知道这是否真的有效,但它解决了阻止它工作的明显问题。

    【讨论】:

    • 对不起,我把所有不相关的东西都删掉了,贴错了。我确实在分​​配之前声明了对第一个测试的更改与我所看到的没有任何区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多