Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 28170|回复: 5

[已解决][VBA纠错]运行时错误1004,应用程序定义或对象定义错误

[复制链接]
发表于 2011-10-31 17:27 | 显示全部楼层 |阅读模式
本帖最后由 kjhsxt 于 2011-10-31 17:33 编辑

请教斑竹,以下代码只有一个目的,实现多工作表指定单元格区域的内容复制,复制到目标工作表“汇总”,但是这么简单的代码,一运行就报错如下:“运行时错误1004,应用程序定义或对象定义错误”

在另外一张空表运行代码,N=2时可以成功一次,但N步进1后(N=3),就再次报错,请斑竹帮忙指出错误所在。

Sub 汇总()
Dim N As Integer, I As Integer, J As Integer
    If [F4] <> "" Then Range("F4:L16").ClearContents
For N = 2 To 4
    I = 8
    J = N + 4
    Sheets(N).Range(Cells(4, I), Cells(16, I)).Copy    ’每次运行到这一句就报错,提示信息:“运行时错误1004,应用程序定义或对象定义错误”
    'Debug.Print Sheets(N).Name
    Cells(4, J).Select
    ActiveSheet.Paste
   
Next N
End Sub
多工作表内容汇总.rar (10.16 KB, 下载次数: 51)
发表于 2011-10-31 17:38 | 显示全部楼层
Sheets(N).Range(Sheets(N).Cells(4, I), Sheets(N).Cells(16, I)).Copy
回复

使用道具 举报

发表于 2011-10-31 17:42 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总()
  2. Dim N As Integer, I As Integer, J As Integer, mm As String
  3. If ActiveSheet.Name <> "汇总" Then Exit Sub
  4.     If [F4] <> "" Then Range("F4:L16").ClearContents
  5. For N = 2 To 4
  6.     I = 8
  7.     J = N + 4
  8.     With Sheets(N)
  9.     .Range(.Cells(4, I), .Cells(16, I)).Copy Cells(4, J)
  10.     End With
  11.     'Debug.Print Sheets(N).Name
  12. Next N
  13. End Sub
复制代码
优化你的代码
回复

使用道具 举报

发表于 2012-7-25 20:35 | 显示全部楼层
原来是这样子啊。怪不得的打开两个工作薄,CELLS()里的内容会 不同呢。 原为RANGE(CELLS(),CELLS())里的CELLS也要指定表名的。{:011:}{:091:}
回复

使用道具 举报

发表于 2012-7-25 20:41 | 显示全部楼层
感谢楼主提问,我也正为这样的问题困惑呢。{:091:}{:091:}
回复

使用道具 举报

发表于 2016-3-24 11:32 | 显示全部楼层
mxg825 发表于 2011-10-31 17:38
Sheets(N).Range(Sheets(N).Cells(4, I), Sheets(N).Cells(16, I)).Copy

真是太强大了,原来RANGE(CELLS(),CELLS())里的CELLS也要指定表名的。谢谢大家,学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 16:35 , Processed in 0.558294 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表