loading...


loading...


公告
loading...

Google 全球搜索 本站搜索
我的分类(专题)
loading...

日志更新
loading...

最新评论
loading...

留言板
loading...

链接

Blog信息
loading...




Google 网上论坛 Beta 版
订阅 excelblogger
电子邮件:
访问此论坛





my e-mail:xhdsxfjy@163.com



Excel Hacks #4:避免表面上不必要的提示
fanjy 发表于 2008-8-27 12:29:00
Excel总会提示您确认您刚才要求Excel执行的操作,退出该会话并让Excel回去执行操作。
我们探讨的提示类型是询问您是否想启用宏,或者是否确定想删除工作表。这里,介绍如何坚决地去除最常见的提示。
当没有任何宏时提示启用宏
当用于在工作簿中录制宏时,Excel的记忆象钢夹一样。不幸的是,即使您通过VBE编辑器删除了一个或多个宏,宏的记忆却不会“消失”。因此,当您重新打开该工作簿时,Excel仍然会提示您是否启用宏,即使没有什么宏。
当然,如果您将安全性设置为“不通知而禁用所有宏”,则不会出现是否启用宏的提示。
当录制宏时,Excel会插入一个VB模块来包含命令和自定义函数。在打开工作簿时,Excel检查模块的存在,是否为空或者有宏。删除工作簿的宏仅删除模块内的任何代码,而不是模块本身。要避免不必要的宏提示,需要删除模块。下面介绍如何实现。
打开VBE编辑器,您将看到如图1所示的图。
图1:工程资源管理器中的模块(示例)
在工程资源管理器中找到工作簿,并单击其左侧的加号(+)展开该工作簿的组件,特别是如果模块没有显示时。依次右键单击每个模块并从菜单中选择“移除模块”。建议导出模块。在删除可能包含有用的代码的模块前,依次双击每个模块确保您不再需要它们。
提示保存不存在的变化
您可能已经注意到了,有时简单地打开工作簿并且没有对该工作簿作过实质的修改,但仍会触发Excel提示您去保存对您的个人宏工作簿的修改。无论您是否知道,在个人宏工作簿中有一个易失性函数。
个人宏工作簿是第一次录制宏时创建的隐藏工作簿(单击“开发工具”─—“代码”─—“录制宏”,在“录制新宏”对话框的“保存在”下拉菜单中指定“个人宏工作簿”)。每次使用Excel都会打开该工作簿。易失性函数(或公式)每次在Excel执行几乎任何操作时都会自动重新计算,包括打开和关闭工作簿或整个应用程序。最常见的两个易失性函数是Today()和Now()函数。
因此,虽然您可能相信您没有对工作簿作出过任何修改,但这些易失性函数可能在后台正在运行。这会被当作对工作簿作出了修改,并且触发Excel提示保存这些不可见的变化。
如果您想Excel停止提示您保存实际上没有做出修改的工作簿,您要开启一些选项。最明显的是首先不要在个人宏工作簿中存储易失性函数,并且删除任何已经存在于该工作簿的易失性函数,您能够使用下面所示的相当简单的代码欺骗Excel认为在其打开时已保存个人宏工作簿,从而绕开检查:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Me.Saved = True
End Sub

上面的代码必须放置在个人宏工作簿的ThisWorkbook模块中。要达到此目的,选择“视图─—窗口─—取消隐藏”,从“取消隐藏工作簿”中选择“Personal.xlsb”并单击“确定”。打开VBE编辑器并输入上述代码。
当然,如果有希望重新计算的易失性函数并且希望保存修改,那么需要明确地告诉Excel这样做:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Me.Saved
End Sub

这个宏将在每次打开工作簿时自动保存个人宏工作簿。
为所录制的宏停止Excel的警告提示
录制的宏的缺陷之一是,虽然在摸仿几乎任何命令方面都相当好,但是却忽略了响应提示的操作。删除一个工作表时,将会出现需要确认的提示;运行相同功能的宏,仍然会被提示。让我们避开这些提示吧。
选择“开发工具─—代码─—宏”或者按“Alt+F8”组合键打开“宏”对话框,确保“位置”下拉列表中选择“所有打开的工作簿”,选择相应的宏并单击“编辑”按钮,在过程代码的第一行添加下列语句:
Application.DisplayAlerts = False
在代码结束前,即过程代码段的结尾,添加下列语句:
Application.DisplayAlerts = True
此时,该宏应该如下:
Sub MyMacro()
    
    ‘MyMacro Macro
    ‘Deletes the Active worksheet
    
    
    
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
End Sub

注意,在宏结束时应该恢复警告,以重新启用在Excel操作时标准的Excel提示。否则,您将再不会看到Excel给您的一些重要提示。
好了,现在您知道如何在使用Excel时避免提示的方法了,但是要小心,因为这些提示的出现都是有其缘故的。在关闭提示之前,您应该完全确保理解了提示的目的。
注:初译自《Excel Hacks》,仅供参考。

阅读全文 | 回复(0) | 引用通告 | 编辑
 


  • 标签:Excel Hacks 
  • 发表评论:

      大名:
      密码:
      主页:
      标题:
      loading...


    fanjy的博客

    Powered by Oblog.