首页 > 解决方案 > 如何将范围从某个单元格复制到某个列中的最后一个非空单元格

问题描述

我正在尝试将 Excel 表格从一个工作簿复制到另一个工作簿。尝试复制范围时出现运行时错误 1004,使用变量 x 来识别 F 列中的最后一个非空单元格。

Sub button_click()

Dim x As Long
x = Range("F100").End(xlUp).Row
Set NewBook = Workbooks.Add
Workbooks("wb").Worksheets("ws").Range("A1:F36").Copy 'works

Workbooks("wb").Worksheets("ws").Range(Cells(1,1), Cells(x, 6)).Copy 'does not work run, time error 1004

NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues) 
End Sub

我希望输出等于复制的范围。

标签: excelvba

解决方案


我的猜测是,这与Cells这段代码中的引用Range(Cells(1,1), Cells(x, 6))不符合工作簿的条件有关。

试试这个,也许:

Sub button_click()

Dim x As Long
Set NewBook = Workbooks.Add

With Workbooks("wb").Worksheets("ws")
    x = .Range("F100").End(xlUp).Row
    .Range(.Cells(1,1), .Cells(x, 6)).Copy
End With

NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues) 
End Sub

请注意,通过添加With...语句然后包括Range(.Cells(而不是Range(Cells(我们现在明确说明我们所指的单元格在此工作表中。

希望这能解决问题!


推荐阅读