Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检查行是否在特定时间限制内_Excel_Vba - Fatal编程技术网

Excel 检查行是否在特定时间限制内

Excel 检查行是否在特定时间限制内,excel,vba,Excel,Vba,这是一个宏,用于检查当前行是否超过30分钟,如果不超过30分钟,则清除这些行。 我正在努力改变: Loop Until > Lastrow 改为只循环直到它在30分钟内到达第一行(以减少机器挣扎时的计算量)。我尝试了以下方面的变化: Loop Until .Cells(i, "A") > TimeLimit 但是没有运气。非常感谢任何帮助! 背景: 试试这个: Option Explicit Sub Clear() Dim wb As Workbook Dim ws1 As

这是一个宏,用于检查当前行是否超过30分钟,如果不超过30分钟,则清除这些行。 我正在努力改变:

Loop Until > Lastrow 
改为只循环直到它在30分钟内到达第一行(以减少机器挣扎时的计算量)。我尝试了以下方面的变化:

Loop Until .Cells(i, "A") > TimeLimit
但是没有运气。非常感谢任何帮助! 背景:

试试这个:

Option Explicit
Sub Clear()

Dim wb As Workbook
Dim ws1 As Worksheet
Dim Lastrow As Long
Dim i As Long
Dim TimeLimit As Date, ChkTIme As Date

Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")

Lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row

TimeLimit = Time - TimeSerial(0, 30, 0)
For i = 10 To Lastrow                    'Since your data starts from row 10
ChkTIme = CDate(ws1.Range("A" & i).Value)

     If ChkTIme < TimeLimit Then
               ws1.Rows(i).EntireRow.ClearContents
     Else: End If

Next i

End Sub
选项显式
次清除()
将wb设置为工作簿
将ws1设置为工作表
最后一排一样长
我想我会坚持多久
Dim TimeLimit As Date,ChkTIme As Date
设置wb=ThisWorkbook
设置ws1=wb.Sheets(“Sheet1”)
Lastrow=ws1.Cells(Rows.Count,1).End(xlUp).Row
TimeLimit=时间-时间序列(0,30,0)
因为数据从第10行开始,所以i=10到最后一行
ChkTIme=CDate(ws1.Range(“A”&i).Value)
如果ChkTIme<时间限制,则
ws1.Rows(i).EntireRow.ClearContents
否则:如果
接下来我
端接头

另外,将A列格式设置为时间格式也很好。

现在尝试使用它。它在我这方面效果很好。你能在你的问题中发布工作表的屏幕截图吗?我想我知道原因:我的数据从第10行开始,在其他数据格式中,上面有使用过的单元格。我将尝试重新格式化工作表,并将您的代码合并到计时器中。再次感谢!很好!非常感谢!我现在需要将它合并到我的计时器代码中,我是否需要显式的选项,因为这似乎会阻止计时器工作?(我在问题中添加了计时器代码,以防您想看一看!)
Sub Update()

    With Sheets("DATA")

        rw = .Cells(.rows.Count, 1).End(xlUp).row + 1
        .Range(.Cells(rw, 1), .Cells(rw, 6342)).value = Sheets("DATA").Range("A7:IJZ7").value

    End With
    Application.OnTime Now + TimeSerial(0, 0, 1), "update"

End Sub
Option Explicit
Sub Clear()

Dim wb As Workbook
Dim ws1 As Worksheet
Dim Lastrow As Long
Dim i As Long
Dim TimeLimit As Date, ChkTIme As Date

Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")

Lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row

TimeLimit = Time - TimeSerial(0, 30, 0)
For i = 10 To Lastrow                    'Since your data starts from row 10
ChkTIme = CDate(ws1.Range("A" & i).Value)

     If ChkTIme < TimeLimit Then
               ws1.Rows(i).EntireRow.ClearContents
     Else: End If

Next i

End Sub