Excel中的VBA循环无法识别时间

Excel中的VBA循环无法识别时间,vba,excel,Vba,Excel,我正在创建一个电子表格,允许用户在特定的15分钟间隔内将事件复制到工作簿中的特定工作表中。时间间隔从午夜到23:45。代码可以很好地复制在6:45或之前发生的任何事情,但是在6:45之后的任何事情都是空白的。我已经手动检查了数据,主工作表上肯定有6:45之后发生的事件,应该复制过来。所有数据都来自同一个Oracle表,因此时间格式应该相同 下面是一段实际有效的代码: 'Core - Orange 06:45 If ActiveCell.Address = "$AC

我正在创建一个电子表格,允许用户在特定的15分钟间隔内将事件复制到工作簿中的特定工作表中。时间间隔从午夜到23:45。代码可以很好地复制在6:45或之前发生的任何事情,但是在6:45之后的任何事情都是空白的。我已经手动检查了数据,主工作表上肯定有6:45之后发生的事件,应该复制过来。所有数据都来自同一个Oracle表,因此时间格式应该相同

下面是一段实际有效的代码:

'Core - Orange 06:45        
        If ActiveCell.Address = "$AC$6" Then                
        If Range("AC6").Value = 0 Then
        MsgBox "No Exceptions Reported"        
        Else:        
        Sheets("Exceptions").Range("A4", "H50").Clear
        Sheets("Core").Select        
        I = 2
        X = 4        
        Do While Sheets("Core").Range("A" & I).Value <> ""        
        If Range("J" & I).Value <= TimeSerial(6, 45, 0) And Range("K" & I).Value > TimeSerial(6, 45, 0) Then        
        Range("A" & I, "H" & I).Select
        Selection.Copy        
        Sheets("Exceptions").Select        
        Range("A" & X).Select        
        ActiveSheet.Paste        
        I = I + 1
        X = X + 1        
        Sheets("Core").Select        
        Else:        
        Sheets("Exceptions").Select
        Range("A1").Select                
        I = I + 1                        
        End If        
        Loop    
    End If    
    End If
'核心-橙色06:45
如果ActiveCell.Address=“$AC$6”,则
如果范围(“AC6”)。值=0,则
MsgBox“未报告任何异常”
其他:
纸张(“例外”)。范围(“A4”、“H50”)。清晰
板材(“核心”)。选择
I=2
X=4
Do While表格(“核心”).范围(“A”和I).值“”
如果范围(“J”和I).值为时间序列(6,45,0),则
范围(“A”和I,“H”和I)。选择
选择,复制
工作表(“例外”)。选择
范围(“A”&X)。选择
活动表。粘贴
I=I+1
X=X+1
板材(“核心”)。选择
其他:
工作表(“例外”)。选择
范围(“A1”)。选择
I=I+1
如果结束
环
如果结束
如果结束
以下是不起作用的代码:

'Core - Orange 07:00        
        If ActiveCell.Address = "$AD$6" Then        
        If Range("AD6").Value = 0 Then
        MsgBox "No Exceptions Reported"        
        Else:        
        Sheets("Exceptions").Range("A4", "H50").Clear
        Sheets("Core").Select        
        I = 2
        X = 4        
        Do While Sheets("Core").Range("A" & I).Value <> ""        
        If Range("J" & I).Value <= TimeSerial(7, 0, 0) And Range("K" & I).Value > TimeSerial(7, 0, 0) Then                        
        Range("A" & I, "H" & I).Select
        Selection.Copy        
        Sheets("Exceptions").Select        
        Range("A" & X).Select        
        ActiveSheet.Paste        
        I = I + 1
        X = X + 1        
        Sheets("Core").Select        
        Else:        
        Sheets("Exceptions").Select
        Range("A1").Select                
        I = I + 1                        
        End If        
        Loop    
    End If    
    End If
核心-橙色07:00
如果ActiveCell.Address=“$AD$6”,则
如果范围(“AD6”).值=0,则
MsgBox“未报告任何异常”
其他:
纸张(“例外”)。范围(“A4”、“H50”)。清晰
板材(“核心”)。选择
I=2
X=4
Do While表格(“核心”).范围(“A”和I).值“”
如果范围(“J”和I).值为时间序列(7,0,0),则
范围(“A”和I,“H”和I)。选择
选择,复制
工作表(“例外”)。选择
范围(“A”&X)。选择
活动表。粘贴
I=I+1
X=X+1
板材(“核心”)。选择
其他:
工作表(“例外”)。选择
范围(“A1”)。选择
I=I+1
如果结束
环
如果结束
如果结束

除了我更新的初始单元格外,这两个代码应该是相同的。我尝试过使用不同的时间格式,但似乎没有任何效果。如果您有任何关于如何克服此问题的帮助或建议,我们将不胜感激。

您确定自己有值吗?是否可以粘贴以确保它在上午7点看起来很好(您也可以跳过使用。选择这么多)将工作表设为var,并使用shCore.Range()etcThanks获取有关使用var的建议,我还是个新手,所以我确信我的代码有点马虎。我粘贴了原始数据,看起来很好。它的格式和7:00之前的一样,所以我还是很困惑(类似
If Range(“J”&I).Value的表达式与
If ActiveSheet.Range(“J”&I).Value
的表达式相同)在Do循环结束时,您可能会遇到“核心”或“异常”作为可能改变下一个循环迭代行为的活动表。尝试使用
和…End With
或完全限定您的引用是否可能在太平洋时区?我问,因为7小时(事情失败的时间点)这是你现在与格林尼治时间的偏移量,可能值得检查一个时钟是否在格林尼治时间工作,另一个在当地时间工作。只是一个预感。嗨,拉尔夫。我自己在太平洋时间,但数据都是东部时间的格式。我在表格中添加了countifs查询,以寻找相同的标准,它能够识别适当的时间尝试并正确计算时间。我甚至手动覆盖时间并手动输入,以查看是否存在格式问题,但运气不佳。