【发布时间】:2018-08-07 08:20:55
【问题描述】:
更新: 我得到的代码正是我想要它做的事情(粘贴在下面),尽管有些人可能不同意我的方法(我会接受反馈,因为我是 100% 的新手)。
我正在尝试创建一个简单的 VBA 代码来运行带有 if then 语句的循环 - 如果该语句为真则停止循环。如果该语句直到最后才为真,则在单元格为 IsEmpty() 时停止循环。
这是我目前所拥有的。这显然是不正确的并且没有运行,但我希望这次尝试能帮助您了解我正在尝试做什么。
Sub runoutDateLoop()
r = 8
Do Until IsEmpty(Cells(r, 1))
c = 24
Do Until Cells(r, c - 1).Value < 1 = True
If Cells(r, c).Value < 1 Then
Cells(r, 18).Value = Cells(7, c)
Else
Cells(r, 18).Value = Cells(7, c)
End If
c = c + 1
Loop
r = r + 1
Loop
End Sub
我正在尝试创建一个循环,直到 if 语句为真。 if then 语句很简单——如果数字是负数,那么我们希望单元格 r,18 复制到单元格 7,c。如果没有,则循环发生,直到有一个负数,或者如果从来没有一个负数,那么直到单元格为空。我希望这对每一行也有一个双 Do Until 循环。
请问大家有什么想法吗?
谢谢!
【问题讨论】:
-
无关,但
IsEmpty可能不是您要查找的功能。对于导致“空”单元格的公式,它将返回 false,例如=""。 -
您可能要考虑使用finding the last row with data,而不是
Do Until循环,然后改用For循环。 -
If Cells(r, c).Value < 1 Then永远不会以这种方式执行,因为Do Until Cells(r, c).Value < 1 = True将在该条件下停止DO循环。此外,不确定您想要ELSE语句的位置,但它应该在IF:END IF结构内。 -
你是否更新了你说你必须工作的代码?此外,您的图片似乎不适用。
-
@Samantha 正如您所说的那样,vour 代码中有几个错误。尝试在 VBE 的 Debug 菜单中编译 VBA 项目。