【发布时间】:2017-06-09 15:10:31
【问题描述】:
如果有人可以帮助我我在这里做错了什么,是 VBA 的新手。 尝试运行循环以查找特定文本,启动循环然后在特定点停止。 循环是这样的,我希望它在我的工作表中复制下面的一些值,因此 a 是 55。 我面临错误 Block IF without End If
代码如下:
Private Sub CommandButton3_Click()
For y = 1 To 15 Step 5
Dim x As Double
Dim a As Double
x = 1
a = 55
If Cells(x, y).Value = "Text1" Then
Do Until Cells(x, y).Value = "Text2"
Cells(a, y) = Cells(x, y).Value
Cells(a, y + 1) = Cells(x, y + 1)
x = x + 1
a = a + 1
Loop
End Sub
【问题讨论】:
-
如果你缩进你的代码,你会发现 2 个错误:1.
If Cells(x, y).Value = "Text1" ThenwithoutEnd If, 2.For y = 1 To 15 Step 5withoutNext y -
如果我使用 if 然后我认为我不需要使用 End if?
-
AFAIK only 时间你不需要
End If是如果你的If语句在一行中......即使那样,最好的做法是使用一个结构化的If语句。例如,这不需要End If:If myVal = 1 then Cells(1,1).Value = "Okay"全部在一行。 -
请参阅this answer 以获得关于正确缩进如何工作的漂亮图形描述,并知道Rubberduck 包含一个非常可定制的Smart Indenter,它可以为您自动完成(完整的免责声明:我积极参与 Rubberduck 开源项目)。
标签: vba excel if-statement