【问题标题】:Looping Through Cells in Worksheet in Excel在 Excel 工作表中循环遍历单元格
【发布时间】:2019-07-16 13:57:20
【问题描述】:

我正在为 Excel 编写 VBA 代码,以循环遍历工作簿中所有工作表中的所有单元格,并根据它们的数值和位置打印某些单元格。但是,由于收到 424 object required 错误,我无法遍历特定工作表中的单元格。

我尝试调试我的代码,当我尝试遍历特定工作表中的整个单元格时,显然问题出在我的嵌套循环中。

Public Sub loopThrougSheet()

Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning
Dim cell As Range
Dim data As Range

For Each ws In ThisWorkbook.Worksheets
ws.Activate
Set data = Intersect(ws.UsedRange, ws.Range("A2:AW1048576"))
    For Each cell In data
        If IsNumeric(cell.Value) And cell.Value > 0.5 Then
            Debug.Print (cell.Value)
        End If
    Next
Next

End Sub

代码无法编译,因为我收到 424 object required run time 错误。

【问题讨论】:

  • 你在哪一行有这个错误?
  • 哪一行?你有错误值吗?我建议首先检查单元格不是错误,然后进行其他检查(嵌套)。
  • 错误在这一行:对于每个单元格在数据中。我得到的错误是运行时错误:'424',需要对象。
  • 可能是因为 data 什么也没返回。工作表可能为空白

标签: excel vba


【解决方案1】:

试试下面:

原因: 数据未返回任何内容,工作表可能为空白或交叉点中没有任何内容。

添加IsError检查单元格,如果数据是空的。

Public Sub loopThrougSheet()

Dim ws As Worksheet
Dim starting_ws As Worksheet

Dim cel As Range
Dim data As Range

For Each ws In ThisWorkbook.Worksheets

    Set data = Intersect(ws.UsedRange, ws.Range("A2:AW1048576"))
        If Not data Is Nothing Then
        For Each cel In data
            If Not IsError(cel.Value) Then
            If IsNumeric(cel.Value) And cel.Value > 0.5 Then
                Debug.Print cel.Value
            End If
            End If
        Next
        End If
Next

End Sub

【讨论】:

  • 谢谢!有用。出于好奇,为什么会首先出现错误?
  • 工作表为空白,因此您的数据没有返回任何内容:) .. 如果有效,请接受答案
  • 谢谢。我只能在 4 分钟内接受这个答案。不知道 Stack Overflow 回答问题的速度这么快 :)
  • 哈哈 ... StackOverFlow 上的人是 :) 向所有人致敬。
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 2020-04-05
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2013-08-17
相关资源
最近更新 更多