Excel For循环返回到列的顶部
我是一名excel vba新手,我正在尝试编写一些代码来自动化特定任务。我设法找到了下面的代码,并对其进行了定制以满足我的需要。由命令按钮激活的代码将在第I列中查找以第5行开头的文本FALSE。当遇到FALSE时,它将停止并将C列中的单元格复制到同一行 代码就是为了这个目的而工作的,但我想更进一步。如果代码到达I列中最后一个填充的单元格时没有遇到FALSE,我希望它返回到列的顶部,并从I1开始搜索 有没有一种方法可以用For循环来做类似的事情?我一直在研究Do-Until和Do-While循环,但还没有看到一个类似于我所尝试的例子 如蒙协助,将不胜感激Excel For循环返回到列的顶部,excel,vba,Excel,Vba,我是一名excel vba新手,我正在尝试编写一些代码来自动化特定任务。我设法找到了下面的代码,并对其进行了定制以满足我的需要。由命令按钮激活的代码将在第I列中查找以第5行开头的文本FALSE。当遇到FALSE时,它将停止并将C列中的单元格复制到同一行 代码就是为了这个目的而工作的,但我想更进一步。如果代码到达I列中最后一个填充的单元格时没有遇到FALSE,我希望它返回到列的顶部,并从I1开始搜索 有没有一种方法可以用For循环来做类似的事情?我一直在研究Do-Until和Do-While循环,
声明一些布尔变量:
Dim isFound为boolean
,将其设置为false:isFound=false
,如果找到匹配项,则将其设置为true:isFound=true
(在复制值之后)。在For
循环检查是否找到匹配如果找到则…
并检查剩余的5个单元格:从I1
到I5
(因为在前面的循环中,我们检查了其余的单元格),或者您可以添加另一个循环,该循环将通过I
列。那么为什么不对于I=1到LR
?另外,在.Copy
之后粘贴到哪里?可能可以使用范围。查找而不是暴力迭代…该程序有点独特。C列中的值表示员工的有序列表,必须按照从上到下的特定顺序分配工作,每次分配一个工作项。假值表示上班的员工,真值表示缺席的员工。我希望代码按顺序查找列表中的下一个FALSE(下一个可用员工)。在我最后的工作表中,将有10个命令按钮。第一个将用于i=2到LR,第二个将用于i=3到LR,依此类推,直到我将用于i=1到LR的最后一个按钮。复制的数据将粘贴到Excel之外的其他程序中。成功了!非常感谢你的帮助!
Private Sub CommandButton1_Click()
Dim LR As Long, i As Long
With Sheets("Sheet1")
LR = .Range("I" & Rows.Count).End(xlUp).Row
For i = 5 To LR
With .Range("I" & i)
If .Text = ("FALSE") Then
.Offset(0, -6).Copy
Exit For
End If
End With
Next i
End With
End Sub