【问题标题】:Error on Union when looping through multiple worksheets循环通过多个工作表时联合错误
【发布时间】:2014-04-25 20:58:42
【问题描述】:

我正在尝试从从多个其他工作表中获取的行中删除与条件匹配的工作表中的行。我需要循环浏览工作簿中的所有其他工作表,每次找到匹配的内容时,我都会删除第一张工作表中的整行。我在 Union 上收到错误 1004。我认为这可能是因为您不能跨工作表使用 Union,所以我在每张工作表之后将其设置为 Nothing。我仍然遇到同样的错误。

代码如下:

Sub findRemaining()
Dim rngToDel As Range
Dim fRng As Range 'Fund range
Dim wCell As Range 'Working sheet cell
Dim wRng As Range 'Working sheet range
Dim WS_Count As Integer
Dim I As Integer

Set fRng = Worksheets("All").Range("B2:B1495")
WS_Count = ActiveWorkbook.Worksheets.Count

For I = 2 To WS_Count
    Set rngToDel = Nothing
    Set wRng = Worksheets(I).Range("B2:B200")
    For Each wCell In wRng 'Loop through all working cells
        ' if wCell found in Fund range then delete row
        If Not IsError(Application.Match(Trim(wCell.Value), fRng, 0)) Then
            If rngToDel Is Nothing Then
                Set rngToDel = wCell
            Else
                Set rngToDel = Union(rngToDel, wCell)
            End If
        End If
    Next wCell
    If Not rngToDel Is Nothing Then rngToDel.EntireRow.Delete
Next I


End Sub

【问题讨论】:

  • 在哪一行出现错误?我对您的代码没有任何问题
  • 几件事:1)您可能应该从For 循环搜索中排除工作表All。 2) 您的描述和代码不匹配:您要从工作表All 或其他工作表中删除找到的匹配项吗?
  • 好的,如果我不将它包含在“For”循环中,如何搜索“All”表?另外,我想从工作表“全部”中删除找到的匹配项。不是其他工作表。

标签: vba excel


【解决方案1】:

问题是我在wRng 中将要删除的范围设置为wCell,但实际上我想删除的是fRng 中的单元格。通过修复其余代码完美运行。 (谢谢克里斯)

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多