Excel精英培训网

 找回密码
 注册
查看: 1759|回复: 5

[无附件] VBA代码优化

[复制链接]
发表于 2019-12-18 10:27 | 显示全部楼层 |阅读模式
各位老师:
下面的代码运行时会提示内存溢出,运行到红色这一段就有报警;不知道什么原因,还望老师帮忙看一下
Sub 删除机床图号相同行()
    Dim arr, rng As Range, d, i&, p$, irow&, x$
    Dim s As Single
    s = Timer
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")
    arr = ActiveSheet.UsedRange
    irow = ActiveSheet.UsedRange.Rows.Count
    Set rng = Cells(irow + 1, 4)
    If IsArray(arr) = False Then Exit Sub
    For i = UBound(arr) To 2 Step -1
       x = arr(i, 8) & arr(i, 11)
       If Not d.exists(x) Then d(x) = 1 Else Set rng = Union(rng, Cells(i, 4))
    Next
    rng.EntireRow.Delete
    Application.ScreenUpdating = True

End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-12-18 11:11 | 显示全部楼层
虽然便于查看代码,但还是需要上传附件
回复

使用道具 举报

发表于 2019-12-18 11:57 | 显示全部楼层
个人感觉 ActiveSheet 不是那么可靠,
不妨在 这句前面 加已经
debug.print ActiveSheet.name
看看 ActiveSheet 是不是预计的.
回复

使用道具 举报

 楼主| 发表于 2019-12-18 16:25 | 显示全部楼层
爱疯 发表于 2019-12-18 11:11
虽然便于查看代码,但还是需要上传附件

版主:
这个代码是作为宏指令用的;对所有文件只要符合这个要求就可以使用;不固定在一个文件里面的;
这个问题会偶尔出现,也不知道是什么原因?
回复

使用道具 举报

发表于 2019-12-18 16:40 | 显示全部楼层
只把数据的值复制到空白工作簿,并加上代码,再看?
只留红色那句,再看?
不断减少数据,直至无数据,再看?


我只能猜到这儿了
回复

使用道具 举报

发表于 2019-12-18 16:44 | 显示全部楼层

arr = sheets("你的表名").UsedRange

arr=sheets("你的表名").[a1].currentregion
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 19:56 , Processed in 0.305431 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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