Excel精英培训网

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

[已解决]自定义排序代码出错问题

[复制链接]
发表于 2017-9-16 12:55 | 显示全部楼层 |阅读模式
本帖最后由 ycb20010823 于 2017-10-29 13:37 编辑

我的自定义排序VBA代码,在Excel2007上运行正常,为啥在Excel2013或者Excel2016上运行后再保存,就提示“Microsoft Excel已停止工作”的对话框呢,然后Excel就是重启了,所有的操作都没有保存下来,这个代码在Excel2007上运行正常呢?

请各位老现给看一下代码出错的原因在哪里,谢谢!!
最佳答案
2017-9-28 11:00
'用指定列中的序列自定义排序
Sub test()
    Dim n As Integer
    '获取自定义序列的个数
    n = Application.CustomListCount

    '1)如果指定序列不存在,则添加
    Sheets(1).Select
    If Application.GetCustomListContents(n)(1) <> [b4] Then
        Application.AddCustomList Range("B4:B49")
    End If

    '2)排序
    Sheets(2).Select
    Range("a2:c" & Range("c65536").End(xlUp).Row).Sort key1:=Range("b1"), OrderCustom:=n + 1

    '3)删除该序列
    Application.DeleteCustomList n + 1
End Sub





没装2013,没法试

QQ截图20170916124913.png

自定义排序代码问题.rar

19.27 KB, 下载次数: 17

发表于 2017-9-30 20:49 | 显示全部楼层
ycb20010823 发表于 2017-9-27 17:00
删除这句运行一次是可以了,下次运行就提示错误了;我也试了另种方式的自定义排序代码,也是运行正常,保 ...

那你把Application.DeleteCustomList注释掉。
然后在Application.AddCustomList前面加一行On Error Resume Next,防止重复自定义相同的序列报错
这样就可以正常运行,且不会报错了!
回复

使用道具 举报

发表于 2017-9-28 11:00 | 显示全部楼层    本楼为最佳答案   
'用指定列中的序列自定义排序
Sub test()
    Dim n As Integer
    '获取自定义序列的个数
    n = Application.CustomListCount

    '1)如果指定序列不存在,则添加
    Sheets(1).Select
    If Application.GetCustomListContents(n)(1) <> [b4] Then
        Application.AddCustomList Range("B4:B49")
    End If

    '2)排序
    Sheets(2).Select
    Range("a2:c" & Range("c65536").End(xlUp).Row).Sort key1:=Range("b1"), OrderCustom:=n + 1

    '3)删除该序列
    Application.DeleteCustomList n + 1
End Sub





没装2013,没法试

回复

使用道具 举报

 楼主| 发表于 2017-9-27 17:00 | 显示全部楼层
d346836673 发表于 2017-9-24 23:31
Application.DeleteCustomList n + 1
删除这句就正常了。
或者用2003

删除这句运行一次是可以了,下次运行就提示错误了;我也试了另种方式的自定义排序代码,也是运行正常,保存闪退,难道是excel2013就和这些代码不兼容吗?
回复

使用道具 举报

 楼主| 发表于 2017-9-25 17:52 来自手机 | 显示全部楼层
对的,运行正常,2007以下保存没问题,2013以上保存闪退,找不到代码的原因
回复

使用道具 举报

发表于 2017-9-25 15:27 | 显示全部楼层
2010测试正常,但运行后保存会直接闪退。
回复

使用道具 举报

发表于 2017-9-25 11:21 | 显示全部楼层
我电脑上只有2007,测试正常啊
回复

使用道具 举报

发表于 2017-9-25 10:55 | 显示全部楼层

我没有安装2013呀,无法帮你测试哦!
回复

使用道具 举报

发表于 2017-9-24 23:31 | 显示全部楼层
Application.DeleteCustomList n + 1
删除这句就正常了。
或者用2003
回复

使用道具 举报

 楼主| 发表于 2017-9-23 13:26 | 显示全部楼层
d346836673 发表于 2017-9-23 08:30
Windows10   64 位   2016 ,运行正常,楼主可以看哈其他程序,有何office软件冲突的。

运行正常,点保存一下试试,就提示错误了!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 23:52 , Processed in 0.619655 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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