回答志伟同学的小问题

志伟同学昨天晚上和我交流了一个技术问题,因为我确实对VBA没有过研究,所以当时也只是说了一个思路,今天好在上班时间不忙,早上给老板重新装了系统,闲下来查了一下资料,解决了。就此写一下,主要是写给志伟,也许初学者都会有这样的疑问。
问题重现:课件中的一个示例提到模块和过程,当时郭老师的操作是打开VBE,在一个项目中添加一个模块和过程,然后在过程中用MsgBox函数显示“老王,您好”,然后运行该宏,会弹出对话框,上面显示“老王,您好”。志伟和我交流的时候说按照老师的方法操作后,在Excel打开时并不会出现这个对话框,他想实现在Excel打开的时候就直接出现这个对话框。
如何解决:其实郭老师在课上只是给大家举例子说明一下VBA的一些概念,并未涉及到实际的具体应用。我当时给志伟的答复是肯定有一个语句在执行Excel打开时执行了这个宏。具体我也不是很清楚。下面我把解决方法这里说明一下:
为工作簿的打开事件创建 VBA 过程,使用VBE在该工作簿的“打开”事件中编写一个 VBA 过程。“打开”事件是一个内置的工作簿事件,它会在你每次打开该工作簿时都运行其宏代码。
举例说明:
1.打开要添加宏的工作簿,或创建一个新工作簿。
2.在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。
3.在“项目资源管理器”窗口中,右键单击“ThisWorkbook”对象,然后单击快捷菜单中的“查看代码”。
4.在代码窗口上方的对象列表中,选择“Workbook”。这样,就自动为“打开”事件创建了下面这样一个空过程:
Private Sub Workbook_Open()
End Sub
5.将下列代码行添加到该过程中:
MsgBox "您好,欢迎志伟进入VBA世界!"
6.全部代码为:
Private Sub Workbook_Open()
  MsgBox "您好,欢迎志伟进入VBA世界!"
End Sub
7.切换到Excel并保存该工作簿,关闭然后重新打开该工作簿。
一切OK。
那我们从头分析上面的问题就可以看出,郭老师课件中虽然通过模块和过程创建了一个宏,但是并没有谁来让这个宏运行,所以只有我们自己执行该宏才能完成任务。那么当你想打开Excel就让这个宏运行的话,说明“打开Excel”就是个激发后续过程的扳机,所以必须在“打开Excel”这个过程中执行你想要的工作,道理因此而来。其实这也就是事件驱动编程模型。
 

你可能感兴趣的:(问题,技术,VBA,同学,志伟)