vba - 我的 IF/ELSE IF 语句在 VBA 中不起作用

标签 vba excel

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

IF(O3<0,"Y",N")

有人可以帮助更改我的代码以包含此 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

完整代码:
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

最佳答案

If 有 2 种有效语法。 VBA 中的语句。

语句语法

If {bool-expression} Then {statement}

这就是你在这里所拥有的:
If Range("O3:O4183") < 0 Then Range("P3").Value = "Y"
    Worksheets("Sample File").Range("P3:P4183").FillDown

缩进具有误导性——第二行将无条件执行,无论 {bool-expression} 的结果如何。在 If陈述。

block 语法
If {bool-expression} Then
    {statements}
[ElseIf {bool-expression} Then]
    {statements}
[Else]
    {statements}
End If

需要时使用该语法Else/ElseIf逻辑,或者如果您想有条件地执行超过 1 条语句*。

*有一些方法可以使用语句语法有条件地执行多个语句,但它们不利于可读性;远离简单的错误,更喜欢 block 语法。

关于vba - 我的 IF/ELSE IF 语句在 VBA 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46408023/

相关文章:

mysql - 将纯文本 HTML 转换为真正的 HTML MySQL > Excel

vba - 使用 Excel VBA 在 XLS 文件中显示 Excel 2007 功能区

excel - VBA优化数组解析和匹配字符串

vba - 如何使在 32 位 Excel 2016 上编写的宏在 64 位 Excel 2016 上工作

mysql - phpmyadmin/CSV(Excel) 问题

c# - openxml sdk excel文件打开关闭公式单元格在windows azure网站上重新计算

excel - 用于搜索字符串,然后搜索第二个字符串并从文本文件返回数据行的 VBA 代码

excel - vba 打开文件夹中最近的文件

excel vba 脚本不会执行预期的 msgbox?

excel - 使用 Python 突出显示 Excel 中的单元格