【问题标题】:How can I use LastRow on a range function?如何在范围函数上使用 LastRow?
【发布时间】:2017-12-12 11:56:49
【问题描述】:

所以我想从工作表 1-工作簿 A 的特定范围的单元格中复制值到工作表 1-工作簿 B 。

我想复制源工作表中的所有内容:更具体地说,是每个具有值的单元格。

在目标工作表上,源工作表上的值有指定的单元格。

这是我目前的代码(很糟糕,但我是 VBA 的菜鸟!):

Sub CopyRangeofCells()
Dim x As Workbook
Dim y As Workbook



Set x = Workbooks.Open("C:\test\template.xlsx")
Set y = Workbooks.Open("C:\test\finalfile.xlsx")


x.Sheets("RDBMergeSheet").Range("A1").Copy


y.Sheets("CW Fast").Range("A1").PasteSpecial

'Close x:
x.Close

End Sub

在我的范围内,我想做 Range("A1:LastRow") 之类的事情。我该怎么做?我可以创建一个 lastrow 变量然后执行 ("A1:mylastrowvariable") 吗?

希望您能提供帮助! VBA 让我很困惑,整天给我 Java! :P

【问题讨论】:

标签: vba excel


【解决方案1】:

让我们一步一步来:

Sub CopyRangeofCells()

Dim x As Workbook
Dim y As Workbook
Dim LastRow As Long

Set x = Workbooks.Open("C:\test\template.xlsx")
Set y = Workbooks.Open("C:\test\finalfile.xlsx")

With x.Sheets("RDBMergeSheet")
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' get last row with data in column "A"

    .Range("A1:A" & LastRow).Copy
End With

y.Sheets("CW Fast").Range("A1").PasteSpecial xlPasteValues

'Close x:
x.Close

End Sub

【讨论】:

  • 听起来不错,但我收到“下标超出范围”错误,它在调试器上突出显示了这一行:y.Sheets("CW Fast").Range("A1") .PasteSpecial
  • 粘贴行仍然有同样的错误。它怎么会超出范围?我能想到的只有两件事可能与此冲突,即我在该列上有过滤器,以及数据验证。这可以解释这个错误吗?
  • @MiguelSáLemos 过滤器?在哪个工作表上?另外,您确定您的"CW Fast")y 工作簿上的拼写完全一样吗?
  • 在目标工作表上,标题有过滤器。是的,工作表名为“CW Fast”
【解决方案2】:

类似这样的:

Sub CopyRangeofCells()
Dim x As Workbook
Dim y As Workbook
Dim LastRow as Long
Dim LastRowToCopy as Long

Set x = Workbooks.Open("C:\test\template.xlsx")
Set y = Workbooks.Open("C:\test\finalfile.xlsx")

LastRowToCopy = x.Sheets("RDBMergeSheet").Cells(x.Sheets("RDBMergeSheet").Rows.Count, "A").End(xlUp).Row
x.Sheets("RDBMergeSheet").Range("A1:A" & LastRowToCopy).Copy
'copy from A1 to lastrow
LastRow = y.Sheets("CW Fast").Cells(y.Sheets("CW Fast").Rows.Count, "A").End(xlUp).Row + 1 'find the last row 
y.Sheets("CW Fast").Range("A" & LastRow).PasteSpecial xlPasteValues
'paste on the lastrow of destination + 1 (so next empty row)
x.Close
End Sub

【讨论】:

  • 这不是在我的目标目标而不是我的源上找到最后一行吗?我很困惑._.
  • 我已经更新了我的答案,找到要复制的范围的最后一行,然后找到要粘贴的目的地的最后一行...
  • 该死的,它看起来很完美,但是在找到目的地的最后一行时,它给了我下标超出范围的错误:(我会继续反复试验,看看为什么会这样,谢谢!
  • 也许如果您只想粘贴到目的地的 A1 上,您不必包括 lastrow?但是这里必须有别的东西让你得到一个超出范围的下标,也许仔细检查你的目的地的工作表名称?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 2013-10-03
  • 2016-07-26
  • 2021-10-04
相关资源
最近更新 更多