【问题标题】:Unknown mystery error when running VBA for loop运行 VBA for 循环时出现未知的神秘错误
【发布时间】:2015-12-07 19:25:36
【问题描述】:

我正在尝试使用以下 VBA 子程序为每个后续列的初始负值/最后一个正值找到相应的第一列值,但是当我运行它时它立即给了我一个

“400”

错误。你们知道可能的原因吗?

Sub findzero()

For i = 225 To 335
    For j = 19 To 10018
        If Range(Cells(j, i)).Value < 0 Then
            Range(Cells(14, i)).Value = Range(Cells(j - 1, 1)).Value
            Exit For
        End If
    Next j
Next i

End Sub

【问题讨论】:

  • “400”错误 - 错误描述是什么?它出现在哪一行?
  • 它给出了一个对话框,只是说“400”,没有上下文,还有一个红框“X”警告标志
  • this 有帮助吗? ...或this...您的工作表是否受到保护?
  • 当只引用一个单元格时,可以使用范围或单元格,但不能同时使用。 Range 需要一系列单元格或在引用单个单元格时单独使用。
  • 有趣的是,我正在提到它并决定放弃它......很高兴你找到了解决方案!

标签: vba excel loops for-loop


【解决方案1】:

当我运行它时,我得到的错误与你不同。我收到“对象'_Global'的方法'范围'失败。”不过,我不太清楚为什么我们的信息不同。

无论如何,我不认为这是正确使用“范围”对象(对象?)。它要么需要是Range(Cells(j,i),Cells(j,i)).Value(选择一个只跨越一个单元格的“范围”)要么只是Cells(j,i).

For i = 225 To 335
    For j = 19 To 10018
        If Cells(j, i) < 0 Then
            Cells(14, i) = Cells(j - 1, 1)
            Exit For
        End If
    Next j
Next i

或者,或者,

For i = 225 To 335
    For j = 19 To 10018
        If Range(Cells(j, i), Cells(j, i)).Value < 0 Then
            Range(Cells(14, i), Cells(14, i)).Value = Range(Cells(j - 1, 1), Cells(j - 1, 1)).Value
            Beep
            Exit For
        End If
    Next j
Next i

我个人更喜欢第一种方式。可能有更好的方法来做到这一点,但我不知道会是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2014-10-23
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多