如何将范围与变量一起使用 - 1004 错误不断出现
Posted
技术标签:
【中文标题】如何将范围与变量一起使用 - 1004 错误不断出现【英文标题】:how to use range with variables - 1004 error keeps surfacing 【发布时间】:2020-03-23 07:51:00 【问题描述】:Dim lastrow&, lastCol&, myarray As Range
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Range("XX1").End(xlToLeft).Column
Set myarray = Range("A1").Resize(lastrow, lastCol)
Application.CutCopyMode = False
Worksheets("Sheet1").Range("A1", myarray).Copy
Application.WindowState = xlNormal
Windows("macrofile.xlsm").Activate
Sheets("MRG").Select
'has to find the last row by itself
Range("A" & Rows.Count).End(xlUp).Offset(2, 0).Select
ActiveCell.PasteSpecial (xlPasteValues)
您好,一直在运行这个简单的代码来复制和粘贴选定的单元格,但我不断收到运行时错误 1004:“应用程序定义或对象定义错误”。
错误在“Worksheets("Sheet1").Range("A1", myarray).Copy" 上触发。 我猜这是由于“myarray”变量。我试过把它分成工作表(“sheet1”)。选择 和 range("a1", myarray).select 然后是 selection.copy,但我只是得到另一个错误 1004:object'_global' 的方法 'range' 失败。
非常感谢任何帮助。我不知所措。
【问题讨论】:
Worksheets("Sheet1").Range(myarray).Copy
应该可以工作。
【参考方案1】:
您需要指定工作表,则不会发生这些错误。像这样:
Dim lastrow&, lastCol&, myarray As Range
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
With ws
lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
lastCol = .Range("XX1").End(xlToLeft).Column
Set myarray = .Range("A1").Resize(lastrow, lastCol)
Application.CutCopyMode = False
.Range("A1", myarray).Copy
End With
...
【讨论】:
最好完全限定范围引用,例如Set ws = ThisWorkbook.Worksheets("Sheet1")
或参考 VB 编辑器工具窗口中显示的工作表的项目代码(名称),例如通过Set ws = Sheet1
或在With Sheet1
中使用Sheet1
:-)以上是关于如何将范围与变量一起使用 - 1004 错误不断出现的主要内容,如果未能解决你的问题,请参考以下文章