您好我正在尝试构建一个使用Application.Ontime填充行的计时器,但如果它们超过30分钟就会清除它们。这样我就可以无限期地运行计时器,而不会累积超过30分钟的数据并导致系统崩溃。到目前为止,我可以成功地每秒创建一个新的数据行。
我在A上有一个时间列,而B列是一个带有1或0的标记,表示该行是否超过30分钟。其他列有数据。 我希望我的宏从第一个数据行(第10行)向下看,找到非空白的第一行(尚未清除)并且在B列中有一个1(超过30分钟)然后清除排。所有其他行应不受影响,并保留在新消隐的空间下方。
应该只有一行带有标记,因为它会每秒运行一次。
我想保持它干净并使用rows.clear因为选择和删除似乎会使这个过程减慢很多..
非常感谢任何帮助,谢谢。
编辑:抱歉由于缺乏清晰度,变得模糊。答案 0 :(得分:0)
你可以试试这个:
Sub Clear()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim Lastrow As Long
Dim i As Long
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1") 'Change the name of your sheet
Lastrow = ws1.Range("A1").SpecialCells(xlCellTypeLastCell).Row
With ws1
i = 10
Do
If .Cells(i, "B") = 1 Then
.Cells(i, "B").EntireRow.ClearContents
'.Cells(i, "B").EntireRow.Delete
End If
i = i + 1
Loop Until i > Lastrow
End With
End Sub
修改#1 强>
基于以下评论:
Sub Clear()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim Lastrow As Long
Dim i As Long
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1") 'Change the name of your sheet
Lastrow = ws1.Range("A1").SpecialCells(xlCellTypeLastCell).Row
With ws1
i = 1
TimeLimit = Time - TimeSerial(0, 30, 0)' Time limit NOW - 30 minutes
Do
If .Cells(i, "A") < TimeLimit Then ' If value in column A is less then the Timelimit then
.Cells(i, "A").EntireRow.ClearContents
End If
i = i + 1
Loop Until i > Lastrow
End With
End Sub