如何将范围与变量一起使用 - 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 错误不断出现的主要内容,如果未能解决你的问题,请参考以下文章

将 ConcatRelated() 与变量一起使用

为啥 PasteSpecial 方法有时会抛出错误 1004?

VBA:粘贴范围清除后粘贴功能导致1004错误

vba 错误无法设置范围类的隐藏属性 错误 1004

如何使用 express 将字符串与错误代码一起发送?

如何将 reactstrap 组件与 react native 应用程序一起使用?