|
楼主 |
发表于 2009-6-20 10:14
|
显示全部楼层
第11部分 其他应用
技巧188 VBE的操作
188-1 添加模块和过程
在工作簿中添加新的模块和过程,除了使用手工添加的方法外,还可以采用程序的方式自动添加,如下面的代码所示。- #001 Sub NowModule()
- #002 Dim VBC As VBComponent
- #003 Set VBC = ThisWorkbook.VBProject.VBComponents _
- #004 .Add(vbext_ct_StdModule)
- #005 VBC.Name = "NowModule"
- #006 With VBC.CodeModule
- #007 If .Lines(1, 1) <> "Option Explicit" Then
- #008 .InsertLines 1, "Option Explicit"
- #009 End If
- #010 .InsertLines 2, "Sub Process1()"
- #011 .InsertLines 3, vbTab & "MsgBox ""这是第一个过程!"""
- #012 .InsertLines 4, "End Sub"
- #013 .AddFromString "Sub Process2()" & Chr(13) & vbTab _
- #014 & "MsgBox ""这是第二个过程!""" & Chr(13) & "End Sub"
- #015 End With
- #016 Set VBC = Nothing
- #017 End Sub
复制代码 代码解析:
NowModule过程在VBE中添加一个“NowModule”模块和两个过程。
第2行代码声明变量VBC为VBComponent对象。VBComponent对象代表一个包含在工程中的部件,例如类模块或标准模块。
第3、4行代码使用Add方法添加一个模块。应用于VBComponents集合的Add方法将一个对象添加到集合,语法如下:
object.Add(component)
参数object是必需的,一个有效的对象表达式。
参数component是必需的,对于VBComponents集合,则为表示类模块、窗体、标准模块的列举常数,如表格 所示。
第5行代码将新添加的模块重命名为“NowModule”。
第7行到第12行代码使用InsertLines方法在新添加的模块中插入过程“Process1”。应用于CodeModule对象的InsertLines方法在一个代码块的某个指定位置,插入一行或多行的代码,语法如下:
object.InsertLines(line, code)
参数object是必需的,一个有效的对象表达式。
参数line是必需的,Long型数据,用来指定要插入代码的位置。
参数code是必需的,String型数据,插入的代码。
其中第7行到第9行代码判断模块中首行代码是否为要求变量声明,如不是则添加要求变量声明语句。
第13、14行代码使用AddFromString方法在新添加的模块中插入过程“Process2”。应用于CodeModule对象的AddFromString方法将文本添加到模块,与InsertLines方法不同的是,所插入文本的位置始终在模块中的第一个过程之前,如果模块中没有包含过程则将插入的文本放置在模块的最后。
运行NowModule过程,在VBE中添加一个“NowModule”模块以及在模块中添加两个过程,如图所示。
[ 本帖最后由 yuanzhuping 于 2009-6-20 10:18 编辑 ] |
|