Excel VBA循环不会基于Activecell值停止
当activecell的值为“BBSE”时,我有一个循环需要停止,但它通过该单元格并继续循环。有人能帮我吗? 我在一个工作簿中从表中剪切行,然后粘贴到另一个工作簿中。在F列的列表之前,我有许多空白单元格,因此我使用xldown。 以下是相关代码:Excel VBA循环不会基于Activecell值停止,vba,excel,Vba,Excel,当activecell的值为“BBSE”时,我有一个循环需要停止,但它通过该单元格并继续循环。有人能帮我吗? 我在一个工作簿中从表中剪切行,然后粘贴到另一个工作簿中。在F列的列表之前,我有许多空白单元格,因此我使用xldown。 以下是相关代码: 'Illuminators Worksheet OP_wb.Activate Range("F2").End(xlDown).Select Do Until ActiveCell.Value = "BBSE" OP_wb.Activate
'Illuminators Worksheet
OP_wb.Activate
Range("F2").End(xlDown).Select
Do Until ActiveCell.Value = "BBSE"
OP_wb.Activate
Worksheets("Optic Main").Activate
Range("F2").End(xlDown).Select
Selection.EntireRow.Cut
Demand_WB.Activate
Worksheets("Illuminators").Activate
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Loop
这里是我想要停止红色圆圈中的循环的地方:
这就是我使用END.xlDown的原因
可能会这样尝试
'Mentioning Starting Row Here
x = 2
Do
'x refers to Row and F refer to column name
With Cells(x, "F")
'Exiting Do Loop once it finds the matching value using If statement
If .Value = "BBSE" Then Exit Do
OP_wb.Activate
Worksheets("Optic Main").Activate
.EntireRow.Cut
Demand_WB.Activate
Worksheets("Illuminators").Activate
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
End With
'Incrementing row number here to move on to next row
x = x + 1
Loop
如果我正确理解了您想要实现的目标,我相信以下几点可以实现:
Dim startRow As Long
Dim endRow As Long
With OP_wb.Worksheets("Optic Main")
startRow = .Range("F2").End(xlDown).Row
endRow = .Columns("F").Find(What:="BBSE", LookIn:=xlValues, LookAt:=xlWhole).Row
.Rows(startRow & ":" & endRow).Cut
End With
With Demand_WB.Worksheets("Illuminators")
.Range("A" & .Rows.Count).End(xlUp).Offset(1).Insert Shift:=xlDown
End With
这永远不会匹配,因为您试图将列的内容与单个单元格的内容进行匹配。但是您的
ActiveCell
位于列a中!(在不同的工作表上?在不同的工作簿中??(第一次循环除外)基本上,停止使用Activate
和Select
。请参阅。@Luuklag第一次通过循环时,选择了由OP_wb.ActiveSheet.Range(“F2”).End(xlDown)
表示的单个单元格(我猜OP_wb
是工作簿)。之后,选择由需求工作表(“照明器”).Range(“A”和Rows.Count).End(xlUp).Offset(1)
表示的单个单元格。因此,永远不会选择列。(我想。也许我应该检查一下。)不,你是对的,第二次通过时选择了整行。我很难理解代码试图做什么。它是否试图将信息从OP_wb
中的表“Optical Main”按相反顺序复制到Demand_wb
中的表“Illuminators”(照明器)中(即底部行在顶部结束),直到您到达F列中包含“BBSE”的源行?如果VBA中不需要结束,因为我们没有使用Else语句:)@Sixthsense,正确答案是“如果
不需要结束,因为它是一行如果
”。一行If
可以包含一个Else
,例如如果A=b那么c=5 Else c=6
。很高兴知道。我将删除我的评论。@YowE3K,你试过了吗?请尝试并发表评论。不知道是谁向我发了-1:(