|
楼主 |
发表于 2011-8-26 18:16
|
显示全部楼层
本帖最后由 liucqa 于 2011-8-26 18:47 编辑
Samsea 发表于 2011-8-26 17:57
发一个附件只带三个sheets。运行发生错误。
有两个错误,一个是内存溢出,这个是打开你的文件之后你的文件里面的宏自动运行报的错误,不是我的文件报的错误,具体我没有分析。这个问题在程序最前面加一句Application.EnableEvents = False就可以解决。
Private Sub Worksheet_Activate()
Dim I%, J%, K%, M%, NoSh%, arr2
Sheets(1).Unprotect
MRR = Cells(65536, 2).End(xlUp).row - 1
MR = Cells(MRR, 2).End(xlUp).row
NoSh = ThisWorkbook.Sheets.Count
ReDim arr2(5 To NoSh, 3 To 34) 就是这句报内存溢出
For I = 5 To NoSh '每表
With Sheets(I)
RowL = .[D65536].End(xlUp).row
For K = 3 To RowL '每行
For J = 3 To 33 '每天
If .Cells(K, 1) = Cells(1, J) And Cells(1, J) <> Empty Then Exit For
Next
arr2(I, J) = arr2(I, J) + .Cells(K, 4)
Next
End With
Next
[C2].Resize(MR - 1, 32) = arr2
Erase arr2
Sheets(1).Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingColumns:=True, AllowFormattingRows:=True
End Sub
第二个错误:删掉你的内置宏之后再运行我的文件, 报copy方法无效,这个与你的sheet格式有关,有一个基本数据的表是深度隐藏,不能拷贝,回头我改改程序。
谢谢你提供样本。我一直想用VBA彻底实现建立副本的功能,但需要不同的样本测试 |
|