【问题标题】:Object defined error - copying range till the last row of information对象定义错误 - 复制范围直到最后一行信息
【发布时间】:2017-07-06 10:02:32
【问题描述】:

我正在尝试打开一个工作簿,然后选择并复制从 A7 到 L7 的范围,直到最后一行信息(向下方向)。我认为该变量未正确定义。有什么帮助吗?

Sub Subtotals()
Dim DT As Workbook
Dim lRowDT As Integer


Set DT = Workbooks.Open("C:\Users\ricardo\Desktop\Data Fuel.xls")
lRowDT = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Workbooks("Data Fuel.xls").Worksheets("Data").Activate
Worksheets("Data").Range("A7:L" & lRowDT).Copy

End sub

【问题讨论】:

  • 哪一行给出了错误?
  • lRowDT = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  • 我不认为打开“Data Fuel.xls”工作簿后的ActiveSheetChart,是吗?
  • 试试Dim lRowDT As Long。始终对变量使用 long,除非您有非常特殊的原因,否则切勿在 VBA 中使用 Integer
  • 这不是 YowE3K 图表。

标签: vba excel


【解决方案1】:

如果 L 列上没有数据,那么这个代码是合适的。

Sub Subtotals()
Dim DT As Workbook
Dim lRowDT As Integer
Dim Ws As Worksheet
Dim rngDB As Range, r As Long, c As Long

    Set DT = Workbooks.Open("C:\Users\ricardo\Desktop\Data Fuel.xls")
    'lRowDT = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

    Set Ws = Workbooks("Data Fuel.xls").Worksheets("Data")
    With Ws
        r = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        c = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
        Set rngDB = .Range("a7", .Cells(r, "L"))
    End With
    rngDB.Copy
End Sub

【讨论】:

  • L 列和 A 列以及两者之间都有数据。
  • 我有关于 A、B、C、H、I 和 L 的数据,中间有没有数据的列,但无论如何我都需要选择所有内容。感谢您的帮助
  • 在 lRowDT 上它给了我 =0 和 Rows.Count=1048576。但我不知道为什么。
  • 是的,它按你的方式工作。谢了哥们。但我不明白为什么它在我的路上不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多