VBA编程方法.pdf

上传人:索**** 文档编号:75156593 上传时间:2023-03-02 格式:PDF 页数:24 大小:176.77KB
返回 下载 相关 举报
VBA编程方法.pdf_第1页
第1页 / 共24页
VBA编程方法.pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《VBA编程方法.pdf》由会员分享,可在线阅读,更多相关《VBA编程方法.pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一、前言本文所说的VBA代码编程,即通过编程方法创建、删除或编辑VBA工程部件、模块或代码程序对象,还可以通过VBA代码创建新的代码,以此可以实现VBA的二次开发。VBA代码编程,也就是所谓的VBA可扩展性。要实现VBA扩展功能,或者说实现对VBA代码的编程,我们必须事先完成以下相关设置。1.1引用 VBA扩展类库(MicrosoftVisualBasicFor ApplicationsExtensibility5.3)在 ACCESS2003 中扩展库文件为:VBE6EXT.OLB,你可以在VBE(VisualBasicEditor即VB编辑器)窗口,点菜单 工具 引用 ,在 引用对话框 中

2、钩,来手动引用该扩展类库,你也可以通过代码实现对其的引用。Dim ref As Reference申明引用类对象On Error Resume Next 避免因重复引用造成的错误提示通过扩展库标识号,主版本号,次版本号完成引用Setref=References.AddFromGuid(0002E157-0000-0000-C000-000000000046,5,3)1.2需要启用编程方式访问VBA项目(仅在EXCEL中需设定)在 Excel 2003 和更早版中,需设定允许对VBA项目的访问,否则将报错。ACCESS 则不需对该项进行设定。点选菜单 工具(在 Excel 中,而不是在VBA编辑

3、器中)宏 安全性 ,在 安全对话框 中,单击 可靠发行商 页,点选 信任对于“VisualBasic 项目”的访问项(见下图)注册表键值:HKLMSoftwareMicrosoftOffice11.0ExcelSecurityAccessVBOM,1,REG_DWORD键值为:1,则钩选;0,则取消钩选二、VBA的可扩展模型对象简介LibraryVBIDE(扩展库)路径:C:Program FilesCommon FilesMicrosoftSharedVBAVBA6VBE6EXT.OLB描述:Microsoft Visual Basic for Applications Extensibil

4、ity5.3VBE(VB 编辑器)指 VB 编辑器,为根对象,其包含所有其它可在Visual Basic for Applications中表示的对象和集合。VBProject(工程)VB 工程(或称项目)中包含了所有的代码模块和部件。VB 项目可包含若干个VB 部件对象。VBComponent(部件)代表包含在工程中的部件对象,如:类模块 或标准模块。部件(VBComponent)对象的Type属性:常数值描述Vbext_ct_StdModule1标准模块Vbext_ct_ClassModule2类模块Vbext_ct_MSForm3Microsoft窗体(非 ACCESS 类窗体)Code

5、Pane(代码窗格)用 CodePane 对象来操作CodePane 中可视文本的位置或者代码窗格中显示的文本选择。CodeModule(代码模块)代码模块是VB 部件 VBA 源代码,可用CodeModule对象来修改(添加、删除、编辑)与部件相关联的代码CodePane或 CodeModule内程序类别(prockind)常数:常数值描述vbext_pk_Proc0指定所有过程除了Property 过程。vbext_pk_Let1指定一个赋值给属性的过程。vbext_pk_Set2指定一个给对象设置引用的过程。vbext_pk_Get3指定一个返回属性值的过程。以上为 VBA 的可扩展模型

6、部分对象(非全部对象),其它模型对象请参阅帮助。三、工程对象(Project)表示一个工程。可用VBProject对象设置工程的属性、访问VBComponents集合以及访问References 集合。通常我们会用ActiveVBProject返回“工程”窗口中选定的工程,但在实际编程中,无论此工程是否被显式地选定,都只有一个工程是活动的。3.1 判断工程是否锁定通过工程Protection属性,判断工程锁定状态。工程Protection属性(只读),指示工程是否处于保护状态。返回的值为一事先定义好的常量,表示工程的状态。Protection属性常量:常数值描述Vbext_pp_none0常量

7、代表指定的工程未被保护。vbext_pp_locked1常量代表指定的工程是被锁住。3.1.1 判断工程是否锁定自定义函数函数功能:判断工程是否锁定Public Function VBProjectlocked(Optional VBProj As VBProject=Nothing)As BooleanDim ProjAs VBProject如未指定工程,则为当前工程If VBProj Is Nothing ThenSetProj=VBE.ActiveVBProjectElseSetProj=VBProjEnd If判断工程是否锁定If Proj.Protection=vbext_pp_lo

8、cked ThenVBProjectlocked=TrueElseVBProjectlocked=FalseEnd IfEnd Function3.1.2 调用自定义函数,判断当前工程是锁定示例函数输出为真(True),否则当前工程锁定If VBProjectlocked=True ThenMsgBox 工程已锁定 ElseMsgBox 工程未锁定 End If3.2 获得工程名获得当前工程名VBE.ActiveVBProject.Name四、部件对象(VBComponent)代表一个包含在工程中的部件,例如类模块或标准模块。使用VBComponent对象访问与部件关联的代码模块CodeMod

9、ule或改变部件的属性设置。4.1 添加工程部件4.1.1 向当前工程添加部件公用过程*公用过程:添加模块或指定名模块 ComponentType 部件类型(可选参数),默认为标准模块 VBCompName 部件名(可选参数),默认不指定部件名*Public SubAddVBComponents(Optional ComponentType As vbext_ComponentType=1,_Optional VBCompName As String=)Dim VBProjAs VBProject申明工程(项目)对象Dim VBCompsAs VBComponents申明部件集合设定为当前工程

10、Set VBProj=VBE.ActiveVBProject设定为当前工程部件集合Set VBComps=VBProj.VBComponents判断是否指定部件名,未指定则按默认名建立指定类型部件If VBCompName=ThenVBComps.Add(ComponentType)ElseVBComps.Add(ComponentType).Name=VBCompNameEnd IfEnd Sub4.1.2 调用自定义过程,添加标准模块例一:以默认名添加标准模块Call AddVBComponents例二:以指定名“我的模块”添加标准模块Call AddVBComponents(,我的模块)

11、4.1.3 调用自定义过程,添加类模块例一:以默认名添加类模块Call AddVBComponents(2)例二:以指定名“我的类模块”添加标准模块Call AddVBComponents(2,我的类模块)4.1.4 调用自定义过程,添加(MSForm)窗体例一:以默认名添加MSForm 窗体Call AddVBComponents(3)例二:以指定名“我的窗体”添加MSForm 窗体Call AddVBComponents(3,我的窗体)说明:这里窗体是指“Microsoft窗体”,而非 ACCESS 通常意义所说的窗体,ACCESS 窗体实际为 ACCESS 类对象,你可以通过Create

12、Form方法创建一个ACCESS 对象窗体。4.2 移除工程中部件4.2.1 移除当前工程部件自定义过程*公用过程:移除指定部件或删除某类部件ComponentType 部件类别(可选参数),默认为标准模块VBCompName 部件名(可选参数),默认不指定部件名*Public Sub RemoveVBComponents(Optional VBCompType As vbext_ComponentType,_Optional VBCompName As String=)Dim VBProjAs VBProject申明工程对象Dim VBCompAs VBComponent申明部件对象Dim

13、VBCompsAs VBComponents申明部件集合设定为当前工程Set VBProj=VBE.ActiveVBProject设定为当前工程部件Set VBComps=VBProj.VBComponents判断是否指定部件名,如未指定则删除所有指定类型部件If VBCompName And VBCompType=0 ThenVBComps.Remove VBComps(VBCompName)ElseFor EachVBComp In VBCompsIf VBComp.Type=VBCompType ThenVBComps.Remove VBComps(VBComp.Name)End IfN

14、extEnd IfEnd Sub4.2.2调用自定义过程,移除指定类型所有部件示例移除指定所有类模块Call RemoveVBComponents(vbext_ct_ClassModule)4.2.3 调用自定义过程,移除指定名部件示例(无需指定部件类型)移除指定名部件,实例:指定“我的窗体”Call RemoveVBComponents(,我的窗体)4.3 列举部件名及类型信息4.3.1获得部件类型自定义函数-函数功能:根据所获取部件类型常量值,获得部件类别名-Function ComponentTypeToString(ComponentType As vbext_ComponentTyp

15、e)As StringSelect CaseComponentTypeCasevbext_ct_ClassModuleComponentTypeToString=类模块 Case100ComponentTypeToString=其它 Casevbext_ct_MSFormComponentTypeToString=微软窗体 Casevbext_ct_StdModuleComponentTypeToString=标准模块 CaseElseComponentTypeToString=未知类:&CStr(ComponentType)End SelectEnd Function4.4 判断部件是否存在

16、4.4.1 判断部件是否存在自定义函数-函数功能:判断指定模块是否存在,存在输出为True-Public Function VBComponentExists(ByVal VBCompName As String)As BooleanDim VBProjAs VBProjectOn Error Resume NextSet VBProj=VBE.ActiveVBProject存在输出为True,否则为FalseVBComponentExists=CBool(Len(VBProj.VBComponents(VBCompName).Name)End Function4.4.2 判断指定模块是否存在

17、调用示例If VBComponentExists(模块 1)=FalseThenMsgBox 不存在 ElseMsgBox 存在 End If4.5 导入部件文件添加部件4.5.1 导入部件自定义过程导入部件文件添加部件输入参数:FileName(字符串变量)指示欲添加部件的路径及文件名Public Sub ImportFilesToVBComps(FileName As String)Dim VBProjAs VBProjectDim VBCompsAs VBComponentsOn Error Resume NextSet VBProj=VBE.ActiveVBProjectSet VBC

18、omps=VBProj.VBComponents导入指定部件文件,添加部件VBComps.Import(FileName)End Sub4.5.2 导入部件文件示例调用示例:从指定C 盘导入部件文件模块 1添加到当前工程Call模块 1)说明:导入文件部件如与部件重名,不会覆盖原部件,而是添加序号重新命名。4.6 导出部件为部件文件4.6.1 导出部自定义过程过程功能:导出部件为部件文件输入参数:FileName(字符串变量)用来指定部件输出为文件的文件名及导出路径CompsFile(Variant)可以是部件名或是部件索引,用以指定欲导出部件Public Sub ExportVBCompsT

19、oFiles(CompsFile As Variant,FileName As String)Dim VBProjAs VBProjectDim VBCompsAs VBComponentsOn Error Resume NextSet VBProj=VBE.ActiveVBProjectSet VBComps=VBProj.VBComponents(CompsFile)导出部件为部件文件VBComps.Import(FileName)End Sub4.6.2 导出部件示例调用示例一:指定部件(模块1)Call ExportVBCompsToFiles(模块模块 1.bas)调用示例二:通过部

20、件索引导出部件,实例中:索引1为Form_ 窗体 1类对象CallForm_窗体 1.cls)说明:你可以通过“部件名”或“索引”来指定需导出部件。4.6.3 根据部件类型获得输出部件文件后缀名根据部件类型,确定输出部件文件后缀名Public Function GetFileExtension(VBComp As VBIDE.VBComponent)As StringSelect CaseVBComp.TypeCasevbext_ct_ClassModuleGetFileExtension=.clsCasevbext_ct_DocumentGetFileExtension=.clsCasevb

21、ext_ct_MSFormGetFileExtension=.frmCasevbext_ct_StdModuleGetFileExtension=.basCaseElseGetFileExtension=.basEnd SelectEnd Function说明:导出文件名要根据不同部件类型,指定后缀名,见下表:部件对象后缀名描述ACCESS 类对象cls通常所说的“窗体”或“报表”对象等。类模块cls含有类定义的模块。标准模块bas只包含过程、类型以及数据的声明和定义的模块。窗体frm指微软窗体,而非ACCESS 类对象窗体。五、代码窗格对象(CodePane)代码窗口中包含的代码窗格。代码窗

22、口被用来输入和编辑代码。代码窗口可含有多个代码窗格。用CodePane 对象来操作CodePane 中代码或选取的代码或文本。5.1 显示代码窗格5.1.1 显示当前代码窗格打开并显示当前代码窗格Public Sub ShowProject()VBE.ActiveCodePane.ShowEnd Sub5.1.2 显示指定部件代码模块窗格函数功能:打开指定部件代码模块窗格Public Sub ShowComponent(ByVal CompsNameOrIndex As Variant)Dim VBProjAs VBProject工程项目对象Dim VBCompAs VBComponent组件

23、对象Dim CodeModAs CodeModule代码模块Dim VBCodePaneAs CodePane窗格对象实例化对象Set VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModuleSet VBCodePane=CodeMod.CodePaneVBCodePane.Show显示代码窗格End Sub5.2 获取窗格所选代码行列信息5.2.1 获取当前窗格中所选代码起止行列信息所选代码的起止行列信息定义数据类型Public Type Se

24、lLineColInfoSLineAs Long起始行SColAs Long起始列ELineAs Long结束行EColAs Long结束列End Type-函数功能:获得所选代码开始行列及结束行列信息Public Function VBGetSelection()As SelLineColInfoDim SelInfoAs SelLineColInfo数据类型VBE.ActiveCodePane.GetSelection SelInfo.SLine,SelInfo.SCol,_SelInfo.ELine,SelInfo.ECol获取的行列信息输出VBGetSelection=SelInfoE

25、nd Function*调用示例:在窗格中任选一处代码行列,再运行以下代码Dim SelInfo As SelLineColInfo 申明自定数据类型起止行列信息赋值给变量SelInfo=VBGetSelection输出显示MsgBox 起始行:&SelInfo.SLine&vbLf&_起始列:&SelInfo.SCol&vbLf&_结束行:&SelInfo.ELine&vbLf&_结束列:&SelInfo.Ecol六、代码模块对象(CodeModule)在诸如窗体,类或文档等部件之后表示程序代码。可用CodeModule对象来修改(添加、删除、编辑)与部件相关联的代码。每个部件都与一个Cod

26、eModule对象相关联。但是,一个CodeModule 对象可以与多个代码窗格CodePane 相关联。6.1 获得指定行代码6.1.1 获得指定模块中指定一行或多行代码函数功能:指定模块指定行代码输入参数:CompsNameOrIndex部件名或索引CodeLine(长整)代码所在行CountLines(长整)可选参数,选取代码行数,默认为 1 行Public Function LineCodeString(ByVal CompsNameOrIndex,_ByVal CodeLine As Long,_Optional CountLines As Long=1)As StringDim V

27、BProjAs VBProjectDim VBCompAs VBComponentDim CodeModAs CodeModuleSet VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModuleLineCodeString=CodeMod.Lines(CodeLine,CountLines)End Function*调用示例一:获得“模块1”,第五行代码Debug.Print LineCodeString(模块 1,5)*调用示例二:获得“模块1

28、”,第一行至第六行代码Debug.Print LineCodeString(模块 1,1,6)6.2 列举模块中所有过程及类型6.2.1 获得过程种类自定义函数 函数功能:获得过程种类名 输入参数:ProcKind(过程类型常数)Public Function ProcKindString(ByValProcKind As vbext_ProcKind)As StringSelect CaseProcKindCasevbext_pk_GetProcKindString=roperty GetCasevbext_pk_LetProcKindString=roperty LetCasevbext_

29、pk_SetProcKindString=roperty SetCasevbext_pk_ProcProcKindString=Sub Or FunctionCaseElseProcKindString=Unknown Type:&CStr(ProcKind)End SelectEnd Function6.2.2 获得指定部件中过程名及类型-函数功能:列出指定模块中所有过程输入参数:CompsNameOrIndex部件名或索引调用:自定义ProcKindString 函数-Public Function ListProcedures(CompsNameOrIndex As Variant)As

30、 StringDim VBProjAs VBProject工程Dim VBCompAs VBComponent部件Dim CodeModAs CodeModule代码模块Dim ProcKindAs vbext_ProcKind过程类型Dim LineNumAs Long代码行Dim sProcKindAs String过程类型名Dim ProcNameAs String过程名实例化当前活动的工程Set VBProj=VBE.ActiveVBProject实例化工程对象集合Set VBComp=VBProj.VBComponents(CompsNameOrIndex)实例化代码模块Set Co

31、deMod=VBComp.CodeModuleWith CodeMod获得代码所在起始行,等于申明行加一LineNum=.CountOfDeclarationLines+1获得指定行所在过程名ProcName=.ProcOfLine(LineNum,ProcKind)申明后第一行开始循环至代码结束,将获取过程名及类型名输出Do Until LineNum=.CountOfLinessProcKind=sProcKind&ProcName&Space(3)&_ProcKindString(ProcKind)&vbLf代码行数累加,将根据所在行获得过程名LineNum=LineNum+.ProcC

32、ountLines(ProcName,ProcKind)ProcName=.ProcOfLine(LineNum,ProcKind)LoopEnd WithListProcedures=sProcKindEnd Function*调用示例:获取Form_窗体 1中所有过程名及类型Debug.Print ListProcedures(Form_ 窗体 1)6.3 判断过程是否存在6.3.1 判断指定过程是否存在自定义函数函数功能:判断指定过程是否存在,存在输出为真Public Function VBProcExists(ByValVBProcName As String,_Optional VB

33、CompNameOrIndex As Variant)As BooleanDim VBProjAs VBProjectDim VBCodeModuleAs CodeModuleDim ProcKindAs vbext_ProcKind过程类型Dim LineNumAs Long代码行Dim ProcNameAs String获得过程名Set VBProj=VBE.ActiveVBProject如不指定部件及为当前窗格代码模块If VBCompNameOrIndex=ThenSetVBCodeModule=VBE.ActiveCodePane.CodeModuleElseSetVBCodeMod

34、ule=VBProj.VBComponents(VBCompNameOrIndex).CodeModuleEnd IfWith VBCodeModule获得代码所在起始行,等于申明行加一LineNum=.CountOfDeclarationLines+1获得指定行所在过程名ProcName=.ProcOfLine(LineNum,ProcKind)申明后第一行开始循环至代码结束,将获取过程名及类型名输出Do Until LineNum=.CountOfLines代码行数累加,将根据所在行获得过程名LineNum=LineNum+.ProcCountLines(ProcName,ProcKind

35、)ProcName=.ProcOfLine(LineNum,ProcKind)进行二进制比对,比对结果等一,则存在If StrComp(VBProcName,ProcName)=1 ThenVBProcExists=TrueExit DoEnd IfLoopEnd WithEnd Function6.3.2 调用自定义函数示例示例一:指定过程名,但不指定部件Debug.Print VBProcExists(过程名)示例二:指定过程名ShowProcedureInfo,并指定部件名Debug.Print VBProcExists(过程名,部件名)示例三:指定过程名,并通过索引指定部件Debug.

36、Print VBProcExists(过程名,3)6.4 获得指定行所在过程名6.4.1 获得指定行过程名自定义函数-函数功能:获得指定行过程名-Public Function GetLineProcName(ByVal LineNum As Long)As StringDim CodeModAs CodeModule申明代码模块Dim VBpaneAs VBIDE.CodePane代码模块所在窗格Dim NumLinesAs Long代码行数Dim ProcNameAs String过程名Dim ProcKindAs vbext_ProcKind过程类型实例化为当前代码窗口Set VBpan

37、e=VBE.ActiveCodePane实例化为当前窗格代码模块Set CodeMod=VBpane.CodeModuleWith CodeMod获得代码起始行行数NumLines=.CountOfDeclarationLines+1判断是否为申明代码行If LineNum NumLines ThenProcName=.ProcOfLine(LineNum,ProcKind)ElseGetLineProcName=-1如为申明代码行,则输出为负1Exit FunctionEnd IfEnd With过程名输出GetLineProcName=ProcNameEnd Function6.4.2 调

38、用指定行过程名函数示例获得指当前代码窗口行号第26 行代码所在过程名Call GetLineProcName(26)6.5 获取过程代码行数信息6.5.1 指定过程总代码行数函数功能:获得指定过程总的代码行数(含过程中的所有空行及注释)Public Function TotalCodeLinesInProc(CompsNameOrIndex,_strProcName As String,_Optional ProcKind As vbext_ProcKind=0)As LongDim VBProjAs VBProject工程对象Dim VBCompAs VBComponent部件对象Dim C

39、odeModAs CodeModule代码模块设定为当前工程Set VBProj=VBE.ActiveVBProject设定为指定部件Set VBComp=VBProj.VBComponents(CompsNameOrIndex)设定为指定部件代码模块Set CodeMod=VBComp.CodeModule过程计数输出TotalCodeLinesInProc=CodeMod.ProcCountLines(strProcName,ProcKind)End Function*调用示例:获得部件bas_ProcInfo 模块中,ShowProcedureInfo 过程总行数Debug.Print

40、TotalCodeLinesInProc(bas_ProcInfo,ShowProcedureInfo)6.5.2 指定过程代码起始行数函数功能:获得指定过程代码起始行(从过程之上的空行和注释计算)Public Function StartLineInProc(CompsNameOrIndex,_strProcName As String,_Optional ProcKind As vbext_ProcKind=0)As LongDim VBProjAs VBProjectDim VBCompAs VBComponentDim CodeModAs CodeModuleSet VBProj=VB

41、E.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModuleStartLineInProc=CodeMod.ProcStartLine(strProcName,ProcKind)End Function*调用示例:获得部件bas_ProcInfo 模块中,ShowProcedureInfo 过程起始行号Debug.Print StartLineInProc(bas_ProcInfo,ShowProcedureInfo)6.5.3 指定过程实际代码起始行数函数功能:获得

42、过程第一行代码行(从过程的实际代码行计算,不含过程之上空行和注释)Public Function CodeBodyLineInProc(CompsNameOrIndex,_strProcName As String,_Optional ProcKind As vbext_ProcKind=0)As LongDim VBProjAs VBProjectDim VBCompAs VBComponentDim CodeModAs CodeModuleSet VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrInde

43、x)Set CodeMod=VBComp.CodeModuleCodeBodyLineInProc=CodeMod.ProcBodyLine(strProcName,ProcKind)End Function*调用示例:获得部件bas_ProcInfo 模块中,ShowProcedureInfo 过程实际起始行号Debug.Print CodeBodyLineInProc(bas_ProcInfo,ShowProcedureInfo)6.5.4 指定过程实际代码行数函数功能:获得指定过程实际代码行数(不包含空行和注释行)Public Function CodeLinesInProc(ByVal

44、 CompsNameOrIndex,_ByVal strProcName As String,_Optional ProcKind As vbext_ProcKind=0)As LongDim VBProjAs VBProjectDim VBCompAs VBComponentDim CodeModAs CodeModuleDim ProcStartAs Long代码起始行Dim ProcTotalAs Long代码总行数Dim IAs Integer循环变量Dim strCodeAs String代码Dim LineCountAs Long行计数变量实例化对象Set VBProj=VBE.A

45、ctiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModule获取开始行号和总行数ProcStart=CodeMod.ProcStartLine(strProcName,ProcKind)ProcTotal=CodeMod.ProcCountLines(strProcName,ProcKind)+ProcStartFor I=ProcStart To ProcTotal将代码赋值给字符串变量strCode=CodeMod.Lines(I,1)跳过空行和注释行If Trim(s

46、trCode)=vbNullString Or Left(Trim(strCode),1)=Chr(39)ThenElseLineCount=LineCount+1End IfNext I实际行数输出CodeLinesInProc=LineCountEnd Function*调用示例:获得部件bas_ProcInfo 模块中,ShowProcedureInfo 过程实际行数Debug.Print CodeLinesInProc(bas_ProcInfo,ShowProcedureInfo)6.6 获取部件或模块中代码行信息6.6.1 获取部件或模块中申明部分行数函数功能:获得指定部件或模块中申

47、明部分总代码行数(含注释行及空行)Public Function TotalDeclLinesInVBComp(CompsNameOrIndex)As LongDim VBProjAs VBProject申明工程项目对象Dim VBCompAs VBComponent申明项目组件对象Dim CodeModAs CodeModule申明组件代码实例化对象Set VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModule获得申明代码行数并输出Total

48、DeclLinesInVBComp=CodeMod.CountOfDeclarationLinesEnd Function*调用示例:获得部件bas_ProcInfo 模块中申明部分总代码行数Debug.Print TotalDeclLinesInVBComp(bas_ProcInfo)6.6.2 获得指定模块中总代码行数函数功能:获得指定模块中总代码行数(含申明代码行、注释行及空行)Public Function TotalCodeLinesInVBComp(CompsNameOrIndex)As LongDim VBProjAs VBProjectDim VBCompAs VBCompon

49、entDim CodeModAs CodeModule实例化对象Set VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(CompsNameOrIndex)Set CodeMod=VBComp.CodeModule获得部件或模块中代码总行数并输出TotalCodeLinesInVBComp=CodeMod.CountOfLinesEnd Function*调用示例:获得部件bas_ProcInfo 模块中总代码行数Debug.Print TotalCodeLinesInVBComp(bas_ProcInfo)6.6.3 获得指定部

50、件或模块中实际代码行数函数功能:获得指定部件或模块代码数。包括申明及代码,但不含注释代码行及空白行Public Function CodeLinesInVBComp(CompsNameOrIndex)As LongDim VBProjAs VBProjectDim VBCompAs VBComponentDim CodeModAs CodeModuleDim IAs LongDim strCodeAs StringDim LineCountAs Long实例化对象Set VBProj=VBE.ActiveVBProjectSet VBComp=VBProj.VBComponents(Comps

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁