excel - VBA If 语句不断运行 ifs

标签 excel vba if-statement

这个 if 语句应该查看一个单元格并根据该单元格中的内容执行操作。如果我只保留语句的第一行,那么代码就可以工作,并且它只会在这种情况下做我希望它做的事情。但是,如果我在“然后”之后添加多个“任务”,它只会在整个程序中一直运行。我知道我在这里遗漏了一些语法,这将使它执行“如果 [this] Then [this, this and this] ElseIf [this] Then [this this and this]。

将第二个第六个“If”变成“ElseIf”会给我错误“ElseIf without block If”

让我知道我缺少什么,我猜测 For、Next 等的一些迭代,但我不熟悉那个函数。

Sub trythis()



Dim tol As String
Dim formblah As String


tol = Range("I7").Value
formblah = "=IF(D21>C21+" & tol & ",""FAIL"",IF(D21<C21+" & tol & ",""PASS"",IF(D21=C21+" & tol & ",""PASS-BONUS"",""N/A"")))"

If Sheets("Caliper").Range("C5").Value = 1 Then Rows("21:26").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Range("E21:E26").Value = formblah
    Range("C21") = 1
    Range("C21").Select
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
    Step:=1, Stop:=6, Trend:=False




ElseIf Sheets("Caliper").Range("C5").Value = 2 Then Rows("21:28").Insert 
Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Range("E21:E28").Value = formblah
    Range("C21") = 1
    Range("C21").Select
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
    Step:=1, Stop:=8, Trend:=False

最佳答案

对于多行 IF,您不能在 Then 之后立即有语句,只能在 block 内。另外,你需要一个 End If

像这样:

If Sheets("Caliper").Range("C5").Value = 1 Then 
    Rows("21:26").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Range("E21:E26").Value = formblah
    Range("C21") = 1
    Range("C21").Select
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
    Step:=1, Stop:=6, Trend:=False

ElseIf Sheets("Caliper").Range("C5").Value = 2 Then 
    Rows("21:28").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Range("E21:E28").Value = formblah
    Range("C21") = 1
    Range("C21").Select
    Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
    Step:=1, Stop:=8, Trend:=False
End If

另外,见她:https://www.techonthenet.com/excel/formulas/if_then.php

关于excel - VBA If 语句不断运行 ifs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455430/

相关文章:

excel - 需要优化一个慢 vba 代码

excel - worksheet_change VBA 代码中具有不同宏调用的多个目标

JAVA AND OR 和 IF

java - 我如何防止用户重复输入(在该程序中使用 JOptionPane 和 if 语句)

excel - 如何查找其他 Excel 实例并将它们分配给 Excel.Application 变量

Excel 2010 VBA - 关闭文件不保存没有提示

VBA正For循环,负步骤

swift - 加入 bool 优化Swift

excel - 可以进行空 Excel 范围集合吗?

php - 将excel数据映射到mysql数据库