【问题标题】:how to use range with variables - 1004 error keeps surfacing如何将范围与变量一起使用 - 1004 错误不断出现
【发布时间】: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 应该可以工作。

标签: excel vba


【解决方案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 :-)
猜你喜欢
  • 2017-10-25
  • 1970-01-01
  • 2011-08-22
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2017-11-29
  • 1970-01-01
相关资源
最近更新 更多