我的IF/ELSE IF声明在VBA中不起作用

exc*_*guy 1 excel vba excel-vba

我无法在我的代码中实现以下if语句:

IF(O3<0,"Y",N")
Run Code Online (Sandbox Code Playgroud)

有人可以帮助改变我的代码以包含这个if语句吗?这是我尝试过的:

  If Range("O3:O4183") < 0 Then Range("P3").Value = "Y"
    Worksheets("Sample File").Range("P3:P4183").FillDown

    ElseIf Range("O3:O4183") > 0 Then Range("P3").Value = "N"
            Worksheets("Sample File").Range("P3:P4183").FillDown

            End If
Run Code Online (Sandbox Code Playgroud)

完整代码:

Sub stackoverflow()

Dim rng As Range

''sample file creation
''values

        Range("A3").Value = "CSH"   ''hardcode
        Worksheets("Sample File").Range("A3:A4183").FillDown

        Set rng = Worksheets("File").Range("C2:C4182")
        Worksheets("Sample File").Range("B3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

                Set rng = Worksheets("File").Range("D2:D4182")
        Worksheets("Sample File").Range("C3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

         Range("D3").Value = "1"   ''hardcode
        Worksheets("Sample File").Range("D3:D4183").FillDown

                Set rng = Worksheets("File").Range("E2:E4182")
        Worksheets("Sample File").Range("E3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

                Set rng = Worksheets("File").Range("E2:E4182")
        Worksheets("Sample File").Range("F3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

         Range("G3").Value = "USD"   ''hardcode
        Worksheets("Sample File").Range("G3:G4183").FillDown

              Set rng = Worksheets("File").Range("K2:K4182")
        Worksheets("Sample File").Range("H3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

                      Set rng = Worksheets("File").Range("F2:F4182")
        Worksheets("Sample File").Range("I3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

         Range("J3").Value = "DEALT"   ''hardcode
        Worksheets("Sample File").Range("J3:J4183").FillDown

                      Set rng = Worksheets("File").Range("H2:H4182")
        Worksheets("Sample File").Range("M3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

         Range("N3").Value = "0"   ''hardcode
        Worksheets("Sample File").Range("N3:N4183").FillDown

                     Set rng = Worksheets("File").Range("J2:J4182")
        Worksheets("Sample File").Range("O3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value

        ''If statement:  IF(O3<0,"Y",N")

End Sub
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 5

IfVBA中的语句有2种有效语法.

语句语法

If {bool-expression} Then {statement}
Run Code Online (Sandbox Code Playgroud)

这就是你在这里所拥有的:

If Range("O3:O4183") < 0 Then Range("P3").Value = "Y"
    Worksheets("Sample File").Range("P3:P4183").FillDown
Run Code Online (Sandbox Code Playgroud)

压痕是误导-二号线将无条件地执行,无论胜负{bool-expression}If声明.

块语法

If {bool-expression} Then
    {statements}
[ElseIf {bool-expression} Then]
    {statements}
[Else]
    {statements}
End If
Run Code Online (Sandbox Code Playgroud)

如果需要Else/ ElseIflogic,或者如果要有条件地执行多于1个语句,请使用该语法*.

*有执行方式有条件地使用多个语句语句的语法,但他们不利的可读性; 远离容易的错误,更喜欢块语法.