Vba 使用IsEmpty停止循环
我发现了一个线程,它直接应用于我试图在这里构建的代码 这段代码只有一个例外,它会不断循环Vba 使用IsEmpty停止循环,vba,excel,Vba,Excel,我发现了一个线程,它直接应用于我试图在这里构建的代码 这段代码只有一个例外,它会不断循环 我认为如果不是IsEmpty将是VBA的描述符,一旦它到达列表的末尾就停止该程序。关于我的评论,请尝试以下操作。这会快得多 Sub Test() Dim ws1 As Worksheet, ws2 As Worksheet Dim CurCell_1 As Range, CurCell_2 As Range Dim Group As Range, Mat As Range, Ran
我认为
如果不是IsEmpty
将是VBA的描述符,一旦它到达列表的末尾就停止该程序。关于我的评论,请尝试以下操作。这会快得多
Sub Test()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim CurCell_1 As Range, CurCell_2 As Range
Dim Group As Range, Mat As Range, Ran As Range
Dim lRow As Long
Set ws1 = ActiveWorkbook.Sheets("Scrap")
Set ws2 = ActiveWorkbook.Sheets("FC Detail")
With ws1
lRow = .Range("E" & .Rows.Count).End(xlUp).Row
Set Ran = .Range("E1:E" & lRow)
For Each Mat In Ran
Set CurCell_2 = ws2.Range("F8")
For Each Group In Ran
Set CurCell_1 = .Cells(Group.Row, Mat.Column)
If Not IsEmpty(CurCell_2) Then
CurCell_2.Value = CurCell_1.Value
End If
Next
Next
End With
End Sub
你所说的“持续循环”是什么意思?如果代码从未退出循环,你怎么知道它“工作”呢?它持续运行是因为你正在寻址整个列。。。两次。为什么不找到最后一行,然后限制你的范围,如另一个链接所示?+1。Colin,如果您进行任何Excel VBA开发,那么查找最后一行将一直是您要做的事情。Siddharth在上面的代码中找到它的方式是你应该记住的。你还需要养成逐步浏览代码(F8)的习惯,看看它到底在做什么。说到好习惯,把DoEvents放在所有循环中,尤其是在开发过程中。这样,你就可以在无休止的循环中随时闯入。非常感谢你的帮助,经过一些修改,效果非常好。
Sub Test()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim CurCell_1 As Range, CurCell_2 As Range
Dim Group As Range, Mat As Range, Ran As Range
Dim lRow As Long
Set ws1 = ActiveWorkbook.Sheets("Scrap")
Set ws2 = ActiveWorkbook.Sheets("FC Detail")
With ws1
lRow = .Range("E" & .Rows.Count).End(xlUp).Row
Set Ran = .Range("E1:E" & lRow)
For Each Mat In Ran
Set CurCell_2 = ws2.Range("F8")
For Each Group In Ran
Set CurCell_1 = .Cells(Group.Row, Mat.Column)
If Not IsEmpty(CurCell_2) Then
CurCell_2.Value = CurCell_1.Value
End If
Next
Next
End With
End Sub