VB后EXCEL无法撤销与恢复

andrew064 2008-05-31 11:32:05
举个例子

Private Sub Worksheet_Change(ByVal Target As Range)
......
end sub

我们在对单元格编辑后,在没有使用VBA的情况下, 是可以撤销刚才的编辑, 但使用VB后, 无法使用编辑->撤销或恢复(重做)

请问如何改变?
...全文
1810 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vimer67 2012-09-04
  • 打赏
  • 举报
回复
viroa 高手,我也刚刚遇到这个问题,一百度结果就到了这里 =^_^=
XYX_YE 2008-05-31
  • 打赏
  • 举报
回复
2楼的,高人呀!能写得像小说一样。
我的路子,写个建 义给微软,让它把这个功能加进去。
但反过来一想:
如果我有个 for i=0 to 10000
或我的代码执行了好多万次,那电脑有那么多的空间来存吗?
我要点多少次才能撤消的完呢?
Viroa 2008-05-31
  • 打赏
  • 举报
回复
要回答楼主的提问,首先,我们必须了解以下知识。

1.普通情况下(无VBA情况),我们在编辑工作表时,Excel会对我们的操作进行记录,并储存在内存中的临时缓存中。
这样,我们便可以任意地“撤销”或“重复”。

但是,缓存空间是有限的,在编辑Excel一段时间后,我们会发现:我们只能撤销部分操作,
再前面一些的操作我们就无法撤销了。

2.除了内存缓存外,Excel还会隔一段时间就将整个工作表储存在硬盘上,
即使我们没按保存键,也没设置自动保存,它也会这么做。
所以在发生意外后(比如突然断电什么的),在重新打开Excel后,它便会提示恢复原工作簿。

在Excel自动保存时,它便会清理一部分缓存空间,使得Excel的缓存功能得以继续运作。

3.Excel的工作表操作缓存只能用来储存对工作表的操作,也就是响应鼠标键盘的操作。

现在,楼主应该对“撤销”和“恢复”有了个大概的认识了吧,那现在就来讲讲VBA了。

1.VBA也有自己的操作缓存,但是,那也只能储存VBA的那些鼠标键盘操作,无法储存工作表操作。

2.运行VBA时,Excel会自动清除工作表的操作缓存,但不会清除VBA的操作缓存。

3.VBA可以模拟鼠标键盘操作,但,那不是真正的鼠标键盘操作,只是“模拟”而已,所以Excel不会对这类操作进行缓存。

也就是说,仅靠改变Excel,是无法解决楼主的问题的。
当然,解决方法还是有的,下面几种方法请楼主自行考虑使用吧。

1.运行前保存工作簿,运行VBA后,如果效果不满意,直接关闭该工作簿,并选择“不保存”即可。
然后重新打开它,看!数据完好无缺。

2.这招是上面的改版:先把原始数据储存到其它文件上,也就是做个数据备份,然后你爱咋整就咋整。

3.自己制作个缓存功能,并自己作“撤销”控件。原理就是在你的VBA代码下编写一串备份代码,
也就是运行主程序前执行Save,把文件备份到某临时文件夹,然后让撤销控件自动分析该文件夹,
若符合某种条件,则控件Enable,否则Diable。最后就是退出文件时删除临时文件夹。
执行“撤销”或“恢复”时将当前工作簿的数据替换掉。
zfoo 2008-05-31
  • 打赏
  • 举报
回复
也碰到了这样的问题!特别在对数据进行测试的时候很不方便。测试失败的时候无法恢复数据。
期待高人解答!
一个小巧而又十分强大的Excel加载项(插件)---OBS.DLL,大小1M左右,却能突破微软的技术壁垒,打破Excel的常规应用模式,开辟了Excel的另类应用空间。加载后新增一个"OBS"工具条,适用于Excel2002及以上版本,推荐在Excel2002/2003中使用。 OBS.DLL的主要功能是制作和编辑OBS文档,一种类似TreeView控件的文档。换句话说,OBS.DLL将Excel表格变成了一个功能强大的超级TreeView控件!普通TreeView控件只能显示一列数据(仅一个字段),而OBS表格却可以显示更多的列(N个字段),而且每个字段都可以汇总(这一点又要比Excel自身的分类汇总更直观、简单),再配合VBA,可以让您轻松驾驭超灵无比的Excel! 当然,OBS.DLL还具备一些很有特色的功能,对Excel的功能来说,应该是一个很好的补充。如: 1、中文简繁互换:在简体中文和繁体中文之间进行转换。 2、进制转换:在二进制、八进制、十进制、十六进制之间相互转换。 3、人民币大小写互换:在Excel中,很多时候需要将小写的金额数字转换成大写,而Excel提供的函数转换出来的格式并不符合中国人的习惯,所以... 4、数字签名:对Excel表格中的内容进行签名保护,主要是防止提供者提供的内容被非法修改。可以用于Excel公文的电子签名,实现真正的无纸办公... 5、保存为图片文件:相当于Excel的照相机功能(有过之而无不及)。可以将Excel中的单元格区域、Shape对象、图片、图表等(甚至是组合形式)以gif、jpg、bmp等各式保存到磁盘中。 6、全功能批注----真正所见即所得的批注编辑器。 7、VB/VBA代码归纳与重写:对VB/VBA代码进行混淆,大大降低代码的可读性,是一种保护VB/VBA代码的很有效的方法。详细的注释说明和一目了然的名称将有助于设计阶段的调试和查错,但是代码一旦发布后,这些优点将会使黑客轻而易举地破解你的成果,呵呵,用这个吧,保证黑客对您的VB/VBA代码一点兴趣和胃口都没有!! 8、解除Excel文档的内部密码。很多时候,我们需要设置Excel表格/工作簿的保护密码,可是随着时间的推移,这些密码很可能遗忘了,怎么办?很着急啊!!!哈哈,用这个保证在2分钟之内解决问题(换个角度:不要再自欺欺人了,Excel的内部密码形同虚设)。 9、信息加密/解密。对Excel文档中的一些敏感信息进行加密处理,即使文档被破解了,里面的信息仍然很安全。可以说这个功能是对Excel安全的一个有力补充。 10、工程代码锁定解锁器。可以撤销ExcelVBA保护密码(对word、Access同样有效) 11、控制和保存功能。这个功能能满足我们不用记一个密码就能非常有效地保护我们的Excel文档,而且可以免除来自微软的威胁。 12、Cookie管理器。在信息时代,没有网络怎么可以?上网时间长了,就会发现在临时文件夹中挤满了cookies,不但占据磁盘空间,而且还可能泄露秘密。用“清理cookie”命令吧,又觉得有些没有必要删,否则下次还得再输一遍;一个一个删吧,东西太多,想都不能想。怎么办??用这个啊!!只要一次性设置要保留的cookie并选中“退出Excel时自动清理”即可。以后只要退出Excel,你的cookies目录中就不会再有其它乱七八糟的cookie了。 13、超级预览。可以根据当前的选择内容自动调整预览对象。如过选中的是单元格区域,就只预览你选中的区域;如果选中的是图表,则仅预览选中的图表;如果只是一个单元格,则自动显示分页符... ... 14、屏幕锁定。当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。暴力破解Excel的打开密码,注意:这个仅对拥有密码设计方案的人有效。 16、Excel加载项/宏管理器。对当前Excel环境下的加载宏/加载项/VBA加载项进行列表,并可以查看相关属性、修改运行状态,甚至是一键破解。 17、Excel对象管理器,可以批量转换Excel中的对象(图片、Shape、图表等)到图片文件; 18、在Excel中播放背景音乐、定时执行特定的程序、整点报时,一定很惬意... 19、屏幕录像及捕捉。哦,这个功能很强大啊。可以截取屏幕图像、录制屏幕变化、图片格式转换、批量bmp转成AVI文件、AVI文件转成动画GIF文件、图片标注... ...强大的不行啦,赶快去看看吧。快捷键:Ctrl+Alt+SpaceBar 或者 Shift+WinKey(微软徽标键) 20、DLL神探,DLL的最大威胁就是注入到系统进程中,让人防不胜防... 21、一键恢复Excel的系统菜单。这个功能... ... 22、Excel版简易游戏。只是几个可以在Excel中玩的游戏... ... ... 有兴趣的请访问:http://www.ChinaOBS.com 。本站热诚欢迎您的到来。
一个小巧而又十分强大的Excel加载项(插件)---OBS.DLL,大小1M左右,却能突破微软的技术壁垒,打破Excel的常规应用模式,开辟了Excel的另类应用空间。加载后新增一个"OBS"工具条,适用于Excel2002及以上版本,推荐在Excel2002/2003中使用。 OBS.DLL的主要功能是制作和编辑OBS文档,一种类似TreeView控件的文档。换句话说,OBS.DLL将Excel表格变成了一个功能强大的超级TreeView控件!普通TreeView控件只能显示一列数据(仅一个字段),而OBS表格却可以显示更多的列(N个字段),而且每个字段都可以汇总(这一点又要比Excel自身的分类汇总更直观、简单),再配合VBA,可以让您轻松驾驭超灵无比的Excel! 当然,OBS.DLL还具备一些很有特色的功能,对Excel的功能来说,应该是一个很好的补充。如: 1、中文简繁互换:在简体中文和繁体中文之间进行转换。 2、进制转换:在二进制、八进制、十进制、十六进制之间相互转换。 3、人民币大小写互换:在Excel中,很多时候需要将小写的金额数字转换成大写,而Excel提供的函数转换出来的格式并不符合中国人的习惯,所以... 4、数字签名:对Excel表格中的内容进行签名保护,主要是防止提供者提供的内容被非法修改。可以用于Excel公文的电子签名,实现真正的无纸办公... 5、保存为图片文件:相当于Excel的照相机功能(有过之而无不及)。可以将Excel中的单元格区域、Shape对象、图片、图表等(甚至是组合形式)以gif、jpg、bmp等各式保存到磁盘中。 6、全功能批注----真正所见即所得的批注编辑器。 7、VB/VBA代码归纳与重写:对VB/VBA代码进行混淆,大大降低代码的可读性,是一种保护VB/VBA代码的很有效的方法。详细的注释说明和一目了然的名称将有助于设计阶段的调试和查错,但是代码一旦发布后,这些优点将会使黑客轻而易举地破解你的成果,呵呵,用这个吧,保证黑客对您的VB/VBA代码一点兴趣和胃口都没有!! 8、解除Excel文档的内部密码。很多时候,我们需要设置Excel表格/工作簿的保护密码,可是随着时间的推移,这些密码很可能遗忘了,怎么办?很着急啊!!!哈哈,用这个保证在2分钟之内解决问题(换个角度:不要再自欺欺人了,Excel的内部密码形同虚设)。 9、信息加密/解密。对Excel文档中的一些敏感信息进行加密处理,即使文档被破解了,里面的信息仍然很安全。可以说这个功能是对Excel安全的一个有力补充。 10、工程代码锁定解锁器。可以撤销ExcelVBA保护密码(对word、Access同样有效) 11、控制和保存功能。这个功能能满足我们不用记一个密码就能非常有效地保护我们的Excel文档,而且可以免除来自微软的威胁。 12、Cookie管理器。在信息时代,没有网络怎么可以?上网时间长了,就会发现在临时文件夹中挤满了cookies,不但占据磁盘空间,而且还可能泄露秘密。用“清理cookie”命令吧,又觉得有些没有必要删,否则下次还得再输一遍;一个一个删吧,东西太多,想都不能想。怎么办??用这个啊!!只要一次性设置要保留的cookie并选中“退出Excel时自动清理”即可。以后只要退出Excel,你的cookies目录中就不会再有其它乱七八糟的cookie了。 13、超级预览。可以根据当前的选择内容自动调整预览对象。如果选中的是单元格区域,就只预览你选中的区域;如果选中的是图表,则仅预览选中的图表;如果只是一个单元格,则自动显示分页符... ... 14、屏幕锁定。当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。暴力破解Excel的打开密码,注意:这个仅对拥有密码设计方案的人有效。 16、Excel加载项/宏管理器。对当前Excel环境下的加载宏/加载项/VBA加载项进行列表,并可以查看相关属性、修改运行状态,甚至是一键破解。 17、Excel对象管理器,可以批量转换Excel中的对象(图片、Shape、图表等)到图片文件; 18、在Excel中播放背景音乐、定时执行特定的程序、整点报时,一定很惬意... 19、屏幕录像及捕捉。哦,这个功能很强大啊。可以截取屏幕图像、录制屏幕变化、图片格式转换、批量bmp转成AVI文件、AVI文件转成动画GIF文件、图片标注... ...强大的不行啦,赶快去看看吧。快捷键:Ctrl+Alt+SpaceBar 或者 Ctrl+左WinKey(微软左徽标键) 20、DLL神探,DLL的最大威胁就是注入到系统进程中,让人防不胜防... 21、一键恢复Excel的系统菜单。这个功能... ... 22、Excel版简易游戏。只是几个可以在Excel中玩的游戏... 23、计划横道图(甘特图)。偶觉得还是用Excel来做横道图最方便了... ... 24、偶将呆板的网络调查和网络投票移植到OBS.DLL中了,变被动为主动! ... ... 有兴趣的请访问:http://www.ChinaOBS.com 。本站热诚欢迎您的到来。
一个小巧而又十分强大的Excel加载项(插件)---OBS.DLL,大小1M左右,却能突破微软的技术壁垒,打破Excel的常规应用模式,开辟了Excel的另类应用空间。加载后新增一个"OBS"工具条,适用于Excel2002及以上版本,推荐在Excel2002/2003中使用。

OBS.DLL的主要功能是制作和编辑OBS文档,一种类似TreeView控件的文档。换句话说,OBS.DLL将Excel表格变成了一个功能强大的超级TreeView控件!普通TreeView控件只能显示一列数据(仅一个字段),而OBS表格却可以显示更多的列(N个字段),而且每个字段都可以汇总(这一点又要比Excel自身的分类汇总更直观、简单),再配合VBA,可以让您轻松驾驭超灵无比的Excel

当然,OBS.DLL还具备一些很有特色的功能,对Excel的功能来说,应该是一个很好的补充。如:
1、中文简繁互换;
2、进制转换(主要是二进制与其它进制之间的相互转换);
3、人民币大小写互换;
4、数字签名;
5、保存为图片文件(将其中的部分内容如单元格区域、Shape对象等保存到磁盘);
6、全功能批注(真正所见即所得的批注编辑);
7、VB/VBA代码归纳与重写(一种保护VB/VBA代码的很有效的方法);
8、解除Excel文档的内部密码。不要再自欺欺人了,Excel的内部密码形同虚设;
9、信息加密/解密。对Excel文档的安全是一个很好的补充;
10、工程代码锁定解锁器。可以撤销ExcelVBA密码保护(对word、Access同样有效)
11、保护Excel文档免受微软的威胁;
12、局域网会议室,可以是2人私语,也可以是多人群强舌战;
13、超级预览,可以根据当前选择的内容自动调整;
14、屏幕保护及简易浏览器;
15、尝试打开忘记密码的文件,暴力破解Excel的打开密码,对拥有密码设计方案的人有效;
16、Excel加载项/宏管理器,可以一键破解加载宏;
17、Excel对象管理器,可以批量转换Excel中的对象到图片文件;
18、简易邮,在Excel中收取和发送邮件也挺有趣的啊;
19、在Excel中播放背景音乐和定时执行特定的程序,一定很惬意;
20、OBS文档的共享工具,一个真正发挥Excel作用,提高效率的工具。(建设中...)
21、DLL神探,Dll的最大威胁就是注入到系统进程中,让人防不胜防...(建设中...)
22、一键恢复Excel的系统菜单;
... ...

5,172

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧