2023年12月16日发(作者:)
用宏操作代码模块。
With onents("Module1").CodeModule
.DeleteLines .ProcBodyLine("delMacro", 0), .ProcCountLines("delMacro", 0)
End With
onents("thisworkbook").Lines 12, 3
onents("模块1")
VBComponents 属性
返回包含在一个工程中的部件的集合。
说明
使用 VBComponents 集合访问、增加或删除工程中的部件。部件可以是窗体、模块或类。VBComponents
集合是标准集合,可用 For?Each 块中。
可用 Parent 属性返回 VBComponents 集合所在的工程名。
在用 Visual Basic 编写应用程序时,可以用 Import 方法从文件往工程中增加部件。
CodeModule 属性
返回一个对象,代表与部件相关的代码。此属性为只读。
说明
如果该部件没有关联的代码模块,CodeModule属性返回Nothing。
注意 CodePane 对象代表一个可见的代码窗口,一个给定的部件可以有多个 CodePane 对象,CodeModule 对象代表部件内的代码。一个部件只能有一个 CodeModule 对象。
CodeModule 属性示例
下列示例使用 CodeModule 及 CountOfLines 属性返回某代码模块内的行数。
onents(6).fLines
以下为CodeModule.*
.AddFromFile 方法
对于 References 集合,此方法添加一个从文件到工程的引用。对于 CodeModule 对象,此方法添加文件内容到模块中。
语法
mFile(filename)
AddFromFile 语法有以下几个部分:
部分
object
Filename
描述
必需的。一个对象表达式,其值是“应用于”列表中的一个对象。
必需的。一个字符串表达式,用来指定欲添加到工程或模块的文件名。如果找不到文件名或未指明路径名,Windows OpenFile 函数可搜寻目录。
说明
对于 CodeModule 对象,AddFromFile 方法可在代码模块中第一个过程之前的行开始插入文件的内容。如果模块没有包含过程,AddFromString 可将文件的内容放置在模块的最后。
AddFromFile 方法示例
下列示例使用 AddFromFile 方法将某文件的内容加到所指定的代码窗格中。
nes(3).mFile "c:Code "
1
.AddFromString 方法
将文本添加到模块。
语法
mString
object 为一个对象表达式,其值是 “应用于” 列表中的一个对象。
说明
AddFromString 方法可在模块中第一个过程之前插入文件的内容。如果模块没有包含过程,AddFromString 可将文件的内容安置在模块最后。
AddFromString 方法示例
下列示例使用 AddFromString 方法添加一行代码“Dim intJack As Integer”到指定的代码窗格中。
nes(3).mString "Dim intJack As Integer"
CodePane 属性
返回一个 CodePane 对象,此属性为只读。
说明
如果存在一个代码窗格,则它将变成活动的代码窗格,并且,包含它的窗口将变成活动的窗口。如果该模块的代码窗格不存在,则CodePane属性将创建一个代码窗格
CountOfDeclarationLines 属性
返回一个Long型数,它包含代码模块的“声明”部分的代码行数。此属性为只读。
CountOfDeclarationLines 属性示例
下列示例使用 CountOfDeclarationLines 属性返回指定的代码窗格中声明行的数目。
nes(2).fDeclarationLines
CountOfLines 属性
返回一个Long型数,包含一个代码模块中代码的行数。此属性为只读
CountOfLines 属性示例
下列示例使用 CountOfLines 属性返回指定代码窗格中的总行数。
nes(2).fLines
CreateEventProc 方法
创建一个事件过程。
语法
EventProc(eventname, objectname) As Long
CreateEventProc 语法有以下几个部分:
部分
object
eventname
objectname
描述
必需的。一个对象表达式,其值是“应用于”列表中的一个对象。
必需的。一个字符串表达式,用来指定欲添加到模块的事件名称。
必需的。一个字符串表达式,用来指定事件源的对象名称。
说明
使用 CreateEventProc 方法来创建一个事件过程。例如,欲为名为 Command1 的 Command Button 控件创建 Click 事件过程,可以用以下的代码,其中 CM 表示 CodeModule 类型的对象:
TextLocation = EventProc("Click", "Command1")
CreateEventProc 方法可返回事件过程的开始行。如果参数引用到一个不存在的事件,CreateEventProc
2
将失败。
CreateEventProc 方法示例
下列示例使用 CreateEventProc 方法来创建 Button_Click 过程。
EventProc("Click", "Button")
DeleteLines 方法
删除一个单行或指定行范围的代码。
语法
Lines (startline) [count]
DeleteLines 语法有以下几个部分:
部分
object
Count
描述
必需的。一个对象表达式,其值是“应用于”列表中的一个对象。
可选的参数。一个 Long 型数,用来指定欲删除的行数。
Startline 必需的。一个 Long 型数,用来指定欲删除的开始行。
说明
如果没有指定欲删除的行数,DeleteLines 将只删除一行。
DeleteLines 方法示例
下列示例包含两个步骤。第一个步骤里的 For Next 循环使用 InsertLines 方法将 26 个英文字母排成 26 行文本(第一行从只有一个字母“A”,第二行有两个字母“ab”,其余依此类推,最后一行就包含“A”到“z”共 26 个字母),插入到 CodePanes(1) 中。
第二个步骤里的 For-Next 循环使用 DeleteLines 方法,将第一个步骤所生成的 26 行文本之单数行删除。虽然在第二个循环里,表面上看起来好象是在删除前面 13 行文本(For I = 1 to 13),但实际上每删除掉一行,其后每一行的行号就都减少了,所以其实删除的只有单数行。下面的解释应使读者更清楚:当 I = 1 时,删除第一行,则第二行变成第一行,第三行变成第二行;因此当 I = 2 时,表面上删除的是第二行,但这个第二行是原本的第三行,因此删除的是原本的单数行,并且此时第三行变成第二行,第四行变成第三行;依次而下,直到删除所有的单数行为止。
For I = 1 to 26
Lines i,
Mid$("abcdefghijklmnopqrstuvwxyz", 1, I)
Next
For I = 1 to 13
Lines I
Next
Find 方法 (VBA外接程序对象模型)
在活动模块上搜寻一个特定字符串。
语法
(target, startline, startcol, endline, endcol [,wholeword] [,matchcase] [, patternsearch]) As
Boolean
Find 方法语法有以下几个部分:
部分
object
target
Startline
描述
必需的。一个对象表达式,其值是 “应用于” 列表中的一个对象。
必需的。一个 String 型数,用来指定欲查找的文本或样式。
必需的。一个Long型数,用来指定欲搜寻的器始行:如果找到的话,将设为匹3
配行。第一行为数字1。
Startcol
endline
endcol
wholeword
matchcase
patternsearch
必需的。一个 Long 型数,用来指定欲搜寻的起始列:如果找到的话,将设为匹配列。第一列是数字1。
必需的。一个 Long 型数,表示最后一个匹配的字符串所在的行数。最后一行可以被指定为-1。
必需的。一个 Long 型数,表示最后一个匹配的字符串所在的列数。最后一列可以被指定为-1。
可选的参数。一个 Boolean型数,表示是否只匹配整个字。如为 True,表示只匹配整个字。默认为 False 。
可选的参数。Boolean,表示是否进行大小写匹配。如为 True,表示大小写皆匹配。默认为 False 。
可选的参数。Boolean,表示欲查找的字符串是否为常规表达式。如为True,表示为常规表达式;默认为False 。
说明
如找到匹配项,Find 方法可返回 True,否则返回 False。
matchcase 和 patternmatch 参数是互斥的;如果两参数皆为 True ,将产生错误。
Find 方法不影响 Find 对话框中的内容。
指定的行和列范围是“或”的关系,因此如果所提供的 endcol 是-1或行的长度,则能够找到指定的最后一行的样式。
Find 方法示例
下列示例使用 Find 方法验证在某个代码窗格的指定范围内,从第 1261 行到 1279 行中包含""字符串。
nes(2). ("", 1261, 1, 1280, 1, False, False)
InsertLines 方法
在一个代码块的某个指定位置,插入一行或多行的代码。
语法
Lines(line, code) InsertLines 语法有以下几个部分:
部分
Line
Code
描述
必需的。一个 Long 型数,用来指定要插入代码的位置。
必需的。一个 String 型数据,即要插入的代码。
object 必需的。一个对象表达式,其值是 “应用于” 列表中的一个对象。
说明
如果使用 InsertLines 方法所插入的文本用换行回车分隔,则将依此插入一些行。
InsertLines 方法示例
下列示例使用 InsertLines 方法将“Option Explicit”这行文本插入到指定的代码窗格中。
nes(1).Lines 1, "Option Explicit"
Lines 属性
返回一个字符串,它包含指定行数的代码。
语法
(startline, count) As String
Lines 语法包含以下部分:
4
部分描述
object必需的。对象表达式,其值是“应用于”列表中的一个对象。
startline必需的。Long型值,指定起始行号。
count必需的。Long 型值,指定要返回的行数。
说明
代码模块中的行号是从 1 开始。
Parent 属性
返回包含另一对象或集合的对象或集合,此属性为只读。
说明
大部分的对象都可有一个 Parent 属性或是 Collection 属性,它们是用来在这个对象模式中指向此对象的父对象。Collection 属性只有在父对象是集合时才可被使用。
使用 Parent 属性来访问一个对象的父对象的属性、方法及控件。
Parent 属性示例
下列示例使用 Parent 属性返回在对象层次中某一对象之父对象的名称。
ProcBodyLine 属性
返回过程的第一行。
语法
dyLine(procname, prockind) As Long
ProcBodyLine 语法有以下部分:
部分
object
procname
prockind
描述
必需的。对象表达式,其值是“应用于”列表中的对象。
必需的。包含过程名的字符串
必需的。指定要定位的过程种类。Property 过程在模块中可以有多种表示,必须指定要定位的过程种类。除了使用 vbext_pk_Proc的Property 过程(即, Sub 和 Function 过程)之外的所有过程。
对 prockind参数可以使用如下的常数 之一:
常数
vbext_pk_Get
vbext_pk_Let
vbext_pk_Set
描述
指定一个返回属性值的过程。
指定一个赋值给属性的过程。
指定一个给对象设置引用的过程。
vbext_pk_Proc 指定所有过程除了Property 过程。
说明
Sub、Function或 Property 出现在一个过程的第一行。
ProcBodyLine 属性示例
以下示例使用 ProcBodyLine 属性,返回指定过程SetupTabs中代码第一行的行号到特定的代码窗格。
nes(3).dyLine ("SetupTabs", vbext_pk_Proc)
ProcCountLines 属性
5
返回特定过程的行数。
语法
untLines(procname, prockind) As Long
ProcCountLines 语法有三部分
部分
object
procname
prockind
描述
必需的。对象表达式,其值是“应用于”列表中的对象。
必需的。包含过程名的字符串
必需的。指定要定位的过程种类。Property 过程在模块中可以有多种表示,必须指定要定位的过程种类。所有过程除了Property 过程(即, Sub 和 Function 过程) 用
vbext_pk_Proc。
描述
指定一个返回属性值的过程。
指定一个赋值给属性的过程。
指定一个给对象设置引用的过程。
对 prockind 参数可以使用如下的常数 之一:
常数
vbext_pk_Get
vbext_pk_Let
vbext_pk_Set
vbext_pk_Proc 指定所有过程除了Property 过程。
说明
ProcCountLines 属性返回在过程声明之前的所有空行及注释行的计数,并且,如果该过程是一段代码模块的最后一个,那么此过程之后的所有空行也计入。
ProcCountLines 属性示例
以下示例使用 ProcCountLines 属性,返回指定过程SetupTabs中代码的行数到特定的代码窗格。
nes(3).untLines ("SetupTabs", vbext_pk_Proc)
ProcOfLine 属性
返回特定的行所在的过程 名。
语法
Line(line, prockind) As String
ProcOfLine 语法有三部分:
部分
object
line
prockind
描述
必需的。对象表达式,其值是“应用于”列表中的对象。
必需的。指定要检查行的 long 。
必需的。指定要定位的过程种类。Property 过程在模块中可以有多种表示,必须指定要定位的过程种类。所有过程除了Property 过程(即, Sub 和 Function 过程)
用 vbext_pk_Proc。
描述
指定一个返回属性值的过程。
指定一个赋值给属性的过程。
指定一个给对象设置引用的过程。
可以给 prockind 参数使用如下的常数 之一:
常数
vbext_pk_Get
vbext_pk_Let
vbext_pk_Set
vbext_pk_Proc 指定所有过程除了Property 过程。
说明
一个过程声明之前的空行或注释行属于该行,并且,如果该过程是一个代码模块的最后一个过程,则该模块后面将有一行或多行空白行。
ProcCountLines 属性返回在过程声明之前的所有空行及注释行的计数,并且,如果该过程是一段代码
6
模块的最后一个,那么紧接着该过程之后的空行或行也是。
ProcOfLine 属性示例
以下示例使用 ProcOfLine 属性返回在特定代码窗格中包含指定行号的过程名。
nes(3).Line (1270, vbext_pk_Proc)
ProcStartLine 属性
返回指定过程 的起始行。
语法
artLine(procname, prockind) As Long
ProcStartLine 语法有三部分:
部分
Object
Procname
Prockind
描述
必需的。对象表达式,其值是“应用于”列表的对象。
必需的。包含过程名称的字符串
必需的。指定要定位的过程种类。Property 过程在模块中可以有多种表示,必须指定要定位的过程种类。所有过程除了Property 过程(即,Sub 和 Function 过程) 用
vbext_pk_Proc。
描述
指定一个赋值给属性的过程。
指定一个给对象设置引用的过程。
对 prockind 参数可以使用如下的常数 之一:
常数
vbext_pk_Let
vbext_pk_Set
Vbext_pk_Get 指定一个返回属性值的过程。
vbext_pk_Proc 指定所有过程除了Property 过程。
说明
一个过程在前面过程的 End Sub 语句下开始第一行。如果该过程是第一个,那么此过程在通用声明部分之后开始。
ProcStartLine 属性示例
以下示例使用 ProcStartLine 属性返回指定过程开始的行到指定的代码窗格。
nes(3).artLine ("SetupTabs", vbext_pk_Proc)
ReplaceLine 方法
用特定的代码代替原代码。
语法
eLine(line, code)
ReplaceLine 语法有以下几个部分:
部分
object
Line
Code
描述
必需的。一个对象表达式,其值是“应用于”列表中的一个对象。
必需的。一个Long型数,用来指定所要代替的行。
必需的。一个 String 型数,用来指定要插入的代码。
ReplaceLine 方法示例
下列示例包含两个步骤。第一个步骤里的 For-Next 循环使用 InsertLines 方法将 26 个英文字母排成 26 行文本(第一行从只有一个字母“A”,第二行有两个字母“ab”,其余依此类推,最后一行包含“A”到“z”共26个字母),插入 CodePanes(1) 。
第二个步骤里的For next 循环使用 ReplaceLine 方法将偶数行的内容变成该行的最后一个字母,奇数行不变。
7
For I = 1 to 26
nes(1).Lines I,Mid$("abcdefghijklmnopqrstuvwxyz", 1, I)
Next I
For I = 1 to 13
nes(1).eLine 2*I, Mid$("abcdefghijklmnopqrstuvwxyz", I, 1)
Next I
VBE 属性
返回该 VBE 对象的根,此属性为只读。
说明
所有的对象都有一个指向 VBE 对象根的 VBE 属性。
VBE 属性示例
下列示例使用 VBE 以及 Name 属性返回活动工程名称。
8


发布评论