VBA过程的调用(含过程名称为变量时的方法)-王度兰亭
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


VBA过程的调用(含过程名称为变量时的方法)

发表时间:2012/7/7 23:23:01 评论(1) 浏览(22411)  评论 | 加入收藏 | 复制
   
摘 要:过程调用方法
正 文:

 原文地址:http://hi.baidu.com/fightiger/item/6adce40f10c35bce75cd3cc0

【不带变量调用】

一般在VBA里,我们调用某个过程,都会用Call语句,先说说用Call语句直接调用某个过程的方法

例如你有一个过程aa如下:
Sub aa()
Msgbox "喵喵", 64
End Sub

那么调用这个过程的方法为:
Sub Call_aa_01()
aa
End Sub

这里,call语句里的call是可以省略的,但为了令代码更清晰,一般程序员会喜欢加上去,以表示aa是一个过程:
Sub Call_aa_02()
Call aa
End Sub

如果aa是一个带有参数的过程,如:
Sub aa(str As String)
MsgBox str, 64
End Sub

那么在用call语句调用的时候,就要这样(不带Call):
Sub Call_aa_03()
aa "喵喵"
End Sub

或者这样(带Call):
Sub Call_aa_04()
Call aa ("喵喵")
End Sub

这里值得注意的是,调用过程的名称如果在整个过程里不是唯一的,即其他模块也有相同名称的过程,那么在调用其他模块里的同名过程时,需要加上模块的名称,如模块1和模块2同时存在过程aa,在模块1里想调用模块2的过程aa,那么必须加上模块2做前缀,否则只会调用同模块下的aa:
Sub Call_aa_05()
Call 模块2.aa
End Sub

如果aa是在另外一个工作簿里,需要先在VBE-工具-引用,添加引用的工作簿(通常会显示该工作簿的工程名称,如VBAProject1;有多个工程相同时应把自身的工程名删除后再添加personal的工程名),再加上工程名加以调用,这里要注意,相互调用的工作簿是要打开的,而且工程名称不能重复,不然不能引用。如:
Sub call_aa_06()
Call VBAProject1.模块2.aa
End Sub

同时,有多个过程aa时,一样需要加上模块名称,只有一个的话模块名称可省略:
Sub call_aa_07()
Call VBAProject1.aa
End Sub

【带变量调用】

好了,以上是传统的调用方法,如果过程名称aa是一个变量呢?我们注意到用Call语句,后面的过程名称不可以是变量,例如以下的调用是行不通的:
Sub Call_aa_08()
Dim str As String
str = "aa"
Call str
End Sub

我们要用另一种方法,Application.run方法来调用过程名是变量的过程:
Sub Call_aa_09()
Dim str As String
str = "aa"
Application.Run str
End Sub

如果用run方法来调用带参数的过程,则这样,多个参数用逗号分隔:
Sub Call_aa_10()
Dim str As String
str = "aa"
Application.Run str, "喵喵"
End Sub

Run方法处理同名过程和Call语句不一样,只要在工作簿中存在相同的名称,即使是工作表里定义的名称,像上一个过程的写法就会报错(没有找到过程或者工程错误),也必须在过程名前加上模块名称(注意点不要漏了),如:
Sub Call_aa_11()
Dim str As String
str = "aa"
Application.Run "模块2." & str, "喵喵"
End Sub

引用其他工作簿(该工作簿必须是打开的),如Book1里的过程则需要加上工作簿名称(注意引号不要漏了),如:
Sub Call_aa_12()
Dim str As String
str = "aa"
Application.Run "Book1!模块2." & str, "喵喵"
End Sub


Access软件网交流QQ群(群号:198465573)
 
 相关文章
开发平台保存过程事例  【wsl  2012/4/27】
《房地产案场管理数据库信息系统》我的access学习过程总结  【陈奕成  2012/5/8】
"缺少变量或过程,不是模块"的原因及解决方法  【宏鹏(转载)  2012/5/23】
SQL存储过程相关信息查看   【赵文斌  2012/6/21】
项目过程及费用控制管理系统  【colin  2012/7/20】
【Access教程】存储过程入门  【漏蛧尐魚℡  2012/9/6】
【Access教程】vba中调用存储过程  【漏蛧尐魚℡  2012/9/27】
常见问答
技术分类
相关资源
文章搜索
关于作者

王度兰亭

文章分类

文章存档

友情链接