首页 > 解决方案 > 如何克服错误 1004 对象 _global 范围失败

问题描述

在这里,我试图将数据从一张表复制到另一张表,我需要从复制表中排除一个特定列

喜欢:认为我有 2 张来自 HSR 的工作表(名称为“组合”、“HSR”)我需要将所有数据复制到组合工作表中,不包括“D”列值

Dim ws As Worksheet
Dim ColumnLetter As Variant
    Set ws = Sheets("HSR")
    Worksheets("HSR").Select
    lr = Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
    lr2 = Sheets("Combined").Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
    ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)
    Range("A2:C" & lr).Copy Sheets("Combined").Range("A" & lr2 + 1)
    Range("E2:ColumnLetter" & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)
End Sub

我希望输出为,在工作表组合中,我不应该从 HSR 工作表中获取 D 列中的值

标签: excelvba

解决方案


ColumnLetter是一个变量。您将其用作String.

改变

Range("E2:ColumnLetter" & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)

Range("E2:" & ColumnLetter & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)

还有一些tips

  1. lr = Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row如果不返回任何内容,lr2 = Sheets("Combined").Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row则会给您错误。如.Find 和 .FindNext.Find所示处理它

  2. 避免使用.Select. 您可能想查看如何避免在 Excel VBA 中使用 Select


推荐阅读