首页 > 解决方案 > 是否可以阻止personal.xlsb 中可用的代码?

问题描述

几年来,我一直在自学 VBA(断断续续地学习它以使我的工作生活更轻松)。我通常能够在这个论坛上找到我的问题的答案,但不是这个。

我自己的personal.xlsb 中有很多“示例”代码。例如,我有一个带有标准标题等的修改过的消息框的公共子,我总是喜欢使其可见,称为PublicSub_MyMsgBox

通常,我创建的自动化也会被我的同事使用。我会为特定目标创建一个带有特定按钮的特定工作簿。我会将所需的代码复制到此共享工作簿中的一个模块中。因此,工作簿也会有一个带有子PublicSub_MyMsgBox的模块。此共享工作簿中的另一个子将有一行调用PublicSub_MyMsgBox

我如何确定当我测试在此共享工作簿中创建的代码时,它没有使用我自己的 personal.xlsb 中的PublicSub_MyMsgBox,而实际上只使用了工作簿中的代码?(能够验证我确实已将所有相关代码复制到工作簿中供我的同事使用)。

非常感谢您的帮助!琳达

标签: excelvba

解决方案


即使引用 pers,personal.xlsb 中的代码也不会运行。工作簿存在!您可以确定不会运行 personal.xlsb 中的任何代码,而不是运行调用的工作簿中的代码

即使您添加了对 personal.xlsb 的引用,对于相同的宏名称,VBA 也会选择工作簿中运行代码的那个。要检查这一点,请尝试下一个场景:

  1. 在您的个人工作簿中创建下一个宏:
Public Sub MyMsgBox()
   MsgBox "Hello from Personal workbook!"
End Sub
  1. 然后在新工作簿的标准模块中创建下一个宏:
Sub MyMsgBox()
   MsgBox "Hello from This workbook!"
End Sub
  1. 创建一个简单的检查Sub,当然,在新工作簿中,添加对您的个人.xlsb 工作簿的引用并运行它:
Sub testMyMsgBox()
   MyMsgBox
End Sub
  1. 它将Sub在您的工作簿中运行。Sub现在,从您的工作簿中注释并testMyMsgBox再次运行。它将从personal.xlsb 运行程序...

推荐阅读