过程分类:Sub 过程 Function 过程 Property 过程Sub 子过程包括事件过程和通用过程,不返回值Function 函数过程返回一个值Property 属性过程可以返回和设置一个值一.子过程(Sub)的定义与调用1)Private Sub 对象名_事件名([参数列表]) '事件过程2)[Private | Public][Static] Sub 过程名([参数列表]) '通用过程..... [Exit Sub] '结束过程,返回调用该过程语句的下一条语句继续运行.....End Sub '私有Private和公有Public过程,省略时默认为公有Public过程'Static表示过程中的局部变量为“静态”变量'参数列表: [ByVal] 变量名[()][As 数据类型]'变量名[()]:无括号表示变量,有括号表示数组'ByVal : 表明其后的形参是按值传递参数,省略或用ByRef,则表明参数是按地址传递'As 数据类型: 省略时默认为变体型变量3)Call 过程名(实在参数表)'调用Sub通用过程'实在参数的个数、类型和顺序,应该与被调用过程的形式参数相匹配'可以把过程名去掉关键字和实参列表的括号来使用:过程名 [实参1[,实参2……]] 二.函数过程(Function)的定义与调用1)[Private | Public][Static] Function 函数名([参数列表])[As 数据类型] '函数过程[语句块][函数名=表达式] [Exit Function]语句块 [函数名=表达式]End Function'函数过程省略[As 数据类型]时默认返回数值型0或字符型空字符串2)过程名([实参列表]) '调用函数过程3)Call 窗体名.过程名([实参表]) ' 调用别的窗体中的过程----------------------------------------------------------------------------------------4)在类模块中,可以先要声明类的实例为对象变量,Dim 对象变量 AS New 类的实例 '声明一个类的变量Call 对象变量.方法或属性 '引用类的实例的方法和属性------------------------------5)形参数组名()[As 数据类型] '按地址传递的数组声明,能用ReDim改变动态数组的大小------------------------------6)对象的过程的声明与调用Private Sub gcming(Bliang As Control) '声明Bling为控件对象Bliang.Caption = "你从外部传来了一个Label控件对象" 'Bliang=Label1End SubPrivate Sub Form_Load() '窗体被加载事件Call gcming(Label1) '调用Gcming过程,把Label1控件对象传给BliangEnd Sub--------------------------------------------------三.变量、过程的作用域Private '定义模块级过程,不能被其它模块调用Pubilc '定义全局级过程,可以被其它模块用CALL方法调用.Dim、Static '声明窗体/模块级变量,出现在子过程中时,只作用在本过程中Dim、Private '声明局部级变量,出现在通用过程时,可以被本窗体/模块子过程调用Public '声明全局级变量,出现在通用过程时,可以在其他模调用Static '声明静态变量,在每次调用时保持原来的值Dim '声明的变量每次被调用过程时,重新初始化 窗体事件过程Private Sub Form_事件名([参数列表])Private Sub Form_Click() '单击窗体事件Dim a As String: a = "发生了窗体事件过程" '[局部变量和常数声明]Print a '语句块(单击窗体时打印出A的值)End Sub '结束'控件事件过程Private Sub 控件名_事件名([参数列表])Private Sub Command1_Click() '控件事件 按钮Dim a As String: a = "发生了控件事件过程" '[局部变量和常数声明]Print a '语句块(单击窗体时打印出A的值)End Sub '结束'------------------------------------------------------------------------------------'通用过程定义方法:[ Private | Public ] [ Static] Sub 过程名([参数列表])'缺省[ Private | Public ]时默认为 Public,模块中所有其它过程访问'Static 表示过程中的局部变量为“静态”变量'Sub 声明子过程的名称,参数,代码' 过程名 过程被调用的变量名Sub Subgcm(blm1, blm2) '声明一个通用子过程Dim blm3 As String '[局部变量和常数声明]If blm1 = 0 Or blm2 = 0 Then '语句块,如果被调用的变量名返回的值为0就blm3 = "调用的子过程提示有一个得到的值为0 " '语句块1Print blm3 & " " & "blm1=" & blm1 & " " & "blm2=" & blm2blm1 = "万事": blm2 = "如意"Exit Sub '立刻退出子过程,把运算结果返回给调用本过程的语句End Ifblm3 = "调用的子过程提示没有一个得到的值为0" '语句块2Print blm3 & " " & "blm1=" & blm1 & " " & "blm2=" & blm2blm1 = "恭喜": blm2 = "发财"End Sub '结束'用Call语句调用Sub过程:Call 过程名(实在参数表)'用InputBox函数弹出一个键盘输入框:InputBox (字符串表达式)Private Sub Command2_Click() '调用过程 按钮Dim blmdz1, blmdz2blmdz1 = InputBox("请输入0或1", "键盘输入blmd1对应值")blmdz2 = InputBox("请输入0或1", "键盘输入blmd2对应值")Call Subgcm(blmdz1, blmdz2) 'blmdz1赋值给blm1,blmdz2赋值给blm2.Print blmdz1 & blmdz2 & "控件过程提示返回了字符型变量blm的值"End Sub'-------------------------------------------------------------------------------------------'函数过程的定义:[ Private | Public ] [ Static] Function 函数名([参数列表])[As 数据类型]'缺省[ Private | Public ]时默认为 Public,模块中所有其它过程访问'Static 表示过程中的局部变量为“静态”变量'函数声明函数名 变量 声明变量类型 返回值类型Function funhsm(hsbl1, hsbl2) '声明一个通用函数过程funhsm = "函数名已经赋值" & "hsbl1+hsb12=" & hsbl1 + hsbl2 & "结果为字符型"If hsbl1 = 0 Or hsbl2 = 0 Then '如果返回的变量值=0就Print "函数过程有得到的值为0,退出调用过程" & "hsbl1=" & hsbl1 & " " & "hsbl2=" & hsbl2Exit Function '立刻退出调用过程。ElsePrint "函数过程无得到的值为0,运行本代码" & "hsbl1=" & hsbl1 & " " & "hsbl2=" & hsbl2End IfEnd Function '结束函数过程'Function过程的调用:过程名([实参列表])Private Sub Command3_Click() '函数过程 按钮Dim a As String, ba = InputBox("请输入0或1", "键盘输入hsbl1对应值")b = InputBox("请输入0或1", "键盘输入hsbl2对应值")a = funhsm(a, B) '可以看出SUB和Function有用法基本相同Print "控件过程提示" & a '可以看到A返回的是函数名的值End Sub 对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。每个对象都是用类定义的,控件代表类。直到在窗体上画出这些被称作控件的对象为止,它们实际上并不存在。在创建控件之时也就是在复制控件类,或建立控件类的实例。这个类实例就是应用程序中引用的对象。在设计时操作的窗体是类。在运行时,Visual Basic 建立窗体的类实例把对象看作是类的原原本本的复制品,从而建立所有对象。一旦它们以单个对象的形式存在,属性就可改变。例如,如果在窗体上画了三个命令按钮,则每个命令按钮对象都是命令按钮类的实例。 每个对象都具有一组由类定义的公共的特征和功能(属性、方法和事件)。但是,每个对象都有自己的名字,都能分别设置成有效或无效,都能放在窗体的不同位置简单一点来说,“ListBox 控件”就是“列表框类的一个实例”。对象可提供现成代码,省却书写麻烦。例如,可以自己创建打开文件和保存文件的对话框,但是你使用 CommonDialog 控件这个对象来代替就省事多了.对象支持属性、方法和事件。对象的数据(设置和属性)称为属性各种可在对象上操作的过程称为方法事件是可被对象识别的动作,例如单击鼠标和按下键盘键,还可编写代码来响应事件。改变对象的属性就可改变对象的特性。方法就是要执行的动作,而属性就是要设置或检索的特性。有些属性可以在“属性”窗口设置初值,而有些属性需要在运行时通过代码赋值。在运行时可以设置并可获得值的属性叫做读写属性。在运行时只能读取的属性叫做只读属性如果将一个属性值存储到一个变量中,则代码执行起来会更快。同一窗体上放置两个相同的控件时,用不同Name属性值来区别这两个对象,但仍然是同一个类控件是放在窗体上的,好比放在一个层次上,要引用控件必须先引用窗体对象层次提供了一种组织结构,它决定了对象间的相互关系以及访问它们的方法。集合对象有自己的属性和方法。对象集合中的对象作为集合的成员被引用控件集合包含已给定窗体上的所有控件,集合中的每个成员用索引号从 0 开始顺次编号如果对集合中的所有对象都必须执行相同操作,则可用集合简化代码。例如:下列代码遍历控件集合,并在列表框中列出每个成员的名字。Form 对象:应用程序中的任何窗体Forms 集合:包含载入的窗体 MDIForm 对象:应用程序中的 MDI 窗体Object 对象:任何对象Control 对象:应用程序中的任何控件Controls集合:包含窗体上的控件 Control 类 :控件的一般变量类型,声明后可以将任何控件引用赋给变量Controls属性:返回对 Control 对象集合的引用AddItem 方法:给控件添加项目Name 属性:返回在代码中用于标识窗体、控件、或数据访问对象的名字For Each 变量名 In 对象集合名 '针对一个集合中的每个元素,重复执行一组语句体[语句体][Exit For][语句体]Next [变量名]'变量名 : 用来遍历集合或数组中所有元素的变量。'对象集合名:对象集合或数组的名称(用户定义类型的数组除外)Dim MyControl as ControlFor Each MyControl In Form1.ControlsList1.AddItem MyControl.Name '把每个控件的名字送到列表框Next MyControlControls!List1.Top = 200 '也可以直接将ListBox 控件的 Top 属性设置为 200例如:在窗体上将命令按钮从一个容器移动到另一个容器需要Frame 控件、PictureBox 控件和 CommandButton 控件Static 变量名 [As [New] 定义类型] '声明变量并分配存储空间Set object.Container [= 对象名] '返回或设置Form上控件的容器Container 属性:返回容器控件或窗体Private Sub Form_Click ()Static intX as IntegerSelect Case intXCase 0Set Command1.Container = Picture1Command1.Top= 0Command1.Left= 0Case 1Set Command1.Container = Frame1Command1.Top= 0Command1.Left= 0Case 2Set Command1.Container = Form1Command1.Top= 0Command1.Left= 0End SelectintX = intX + 1End Sub变量可引用对象。如同给变量赋值一样,变量名往往比变量所含的值短而好记,在运行代码时为了引用其它对象,应改变变量,引用包含对象的变量比反复引用对象本身有更高的效率.用 New 关键字创建新对象,这个对象被视为它的类所定义的对象。可用 New 创建集合、窗体的实例以及类模块中定义的类。在设计时创建的窗体是类。可用 New 关键字创建这个类的新实例,也可将 New 关键字与Set 语句并用,将 New 关键字和 Set 语句并用会加快运行速度,因此,这种方法值得推荐Dim f As Form1Static A as IntegerSet f = New Form1f.Caption = "类实例"+Af.ShowA=A+1可用 New 关键字从类模块中定义的类创建集合和对象,例如:New 关键字是如何创建类的实例的。从“工程”菜单中选择“添加类模块”命令,添加以下代码,本例创建类的新实例,还调用了包含在类模块中的过程。Sub ShowFrm()Dim frmNew As Form1Set frmNew = New Form1frmNew.Show '显示窗体frmNew.WindowState = 1 '1-最小化窗体,0-正常,2-最大化窗体End Sub在窗体中添加以下代码.Public clsNew As Class1Private Sub Command1_Click()Set clsNew = New Class1clsNew.ShowFrmEnd Sub每个对象都使用内存和系统资源。当不再使用对象时及时释放这些资源,这是良好的习惯。用 Unload 从内存中卸载窗体或控件。用 Nothing 释放对象变量占用的资源。用 Set 语句将 Nothing 赋予对象变量。 可以通过引用把对象传递给参数,然后在过程内将参数设置成新对象。Private Sub Form_Click () '窗体1Form2.GetPicture Picture1End SubPrivate objX As PictureBox '窗体2Public Sub GetPicture (x As PictureBox)Set objX = x '将传递进来的图片框赋予对象变量。objX.Picture = picture2.Picture '将 Picture 属性值赋予 Form1 的图片框。End Sub 四.数组维数及数组声明数组: 是同类型变量的一个有序的集合数组元素: 即数组中的变量.用下标表示数组中的各个元素如:A(3,2)第3行第2列上的元素数组维数: 有多少个下标表示有多少维数组如:A(3,2)有两个下标,是二维数组下标: 下标表示顺序号,取值范围是:下界 To 上界,默认下界=0,如:A(3)=A(0 To 3)静态数组: 声明时确定了大小的数组如:A(3)动态数组: 声明时没有给定数组大小如:A()控件数组: 通过索引号Index来标识各控件如:Text1(0)、Text1(1)、Text1(2)控件数组的建立:1)在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组。2)在编程时通过Load事件添加其余若干个元素,也可以通过Unload删除某个添加的元素.3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible=True1)Dim 数组名(下标) [As 类型] ' 声明一维数组下标 'A to B的A是下界,A To省略时默认下界=0,B是上界如:1 TO 2,大小=2-1+1=2(列)As 类型 '省略时默认为变体型2)Dim 数组名(下标1[,下标2…]) [As 类型] '声明多维数组Option Base n '从新设置数组下标默认为0的下界,N=13)Dim 数组名() [As 类型] '声明维数为空的动态数组4)ReDim 数组名(下标1[,下标2…]) [As 类型] '重新定义数组动态维数,分配存储空间ReDim '在过程中,可以多次改变数组的维数,但原来数组中的值会丢失 下标 '可以是常量或有了确定值的变量5)变量名=Array(下标1,下标2,...)'给数组的各元素赋值,省略下标值时创建长度为0的数组6)UBound (变量名[,LBound]) '返回一个整型数据,其值为数组某维的最大下标值UBound '返回一个数组变量的某一维数的上界LBound '用来确定返回数组哪一维的上界,省略时默认为第1维的上界vbNewLine换行显示标志,换行符 (Chr(10))、回车符 (Chr(13)) 例:Private Sub Picture1_Click() 'PictureBox图片框单击事件Dim a As Variant, b As Variant, i%A =Array(1,2,3,4,5) '创建整型的5个数组元素并指定每一元素的值Picture1.Print a(0) ; a(4) ; a(2) ; a(1) ; a(3)B = Array("姓名","电话","地址") '创建字符串型的3个数组元素并指定每元素的值Picture1.Print B(1); B(0); B(2) '输出各元素的值For i = 0 To UBound(a) '终值 =1,2,3,4,5 步长为i+1Picture1.Print a(i); ""; '输出数组A(i)的值和一个空格Next iPicture1.Print (Chr(13)) '输出一个回车符For i = 0 To UBound(B)Picture1.Print b(i); (Chr(10)) '输出数组b(i)的值和一个换行符Next iPicture1.Print vbNewLine '输出一个换行符End Sub 数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。控件数组是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的,不能从一个数组的中部加载或卸载数组元素。一个数组中的所有元素具有相同的数据类型有时希望能够在运行时具有改变数组大小的能力,动态数组就可以在任何时候改变大小。动态数组最灵活、最方便,有助于有效管理内存。在不使用时,将内存空间释放给系统。Option base 1 '将缺省的数组下标设为 1,此句必需写在所有过程之前,并只能出现一次Private Sub Command1_Click()Dim LowerDim MyArray(20), TwoDArray(3, 4) '声明数组变量。Dim ZeroArray(0 To 5) '取代缺省的下标。text1.text = LBound(MyArray) '返回 1,使用 LBound 函数来测试数组的下界。text2.text = LBound(TwoDArray, 2) '返回 1,返回第二维下标的下界text3.text = LBound(ZeroArray) '返回 0,下标用TO来指定下界,不是缺省下标,不改变End SubPrivate Sub Command2_Click() '定义动态数组大小Dim MyArray() As Integer '声明动态数组。ReDim MyArray(10) '大小重定为 10 个元素。For I = 1 To 10 '循环 10 次。MyArray(I) = I + 20 '初始化数组。Next IText1.Text = MyArray(3)x = InputBox("改变数组的大小保留原值", , 6)ReDim Preserve MyArray(x) '重新定义数组大小,保留原来的元素数据Text2.Text = MyArray(3)x = InputBox("改变数组的大小不保留原值", , 5)ReDim MyArray(x) '重新定义数组大小,原来的元素会被清除Text3.Text = MyArray(3)End Sub 不同类型的变量可以组合起来用来创建用户定义的类型,当需要创建单个变量来记录多项相关的信息时,用户定义类型是十分有用的。用 Type 语句创建用户定义的类型,该语句必须置于模块的声明部分。用户定义类型可以包含一个固定大小的数组,也可以包含动态数组。可以采用访问对象中的属性的方法来访问用户定义类型中数组的值。Type 语句只能在模块级使用。如果要在类模块中使用,则必须声明为私有Private。Byte二进制数 %Integer整数 &Long长整型 !Single实数 #Double双精度型 @Currency货币Boolean真假值 Date日期和时间 Object 对象 String字符串 Variant可变类型Type 自定义类型名 '声明一个由不同类型的变量组合起来的集合名称元素名 As 类型名 '定义集合中一个元素体的变量名和类型…数组名[(下标)] As 类型名 '定义集合中一个数组元素体的数组名和类型,可以是动态数组End Type自定义类型名 '一般在标准模块(.bas)中定义,默认是Public全局级元素名 '表示自定义类型中的一个成员,可以是定长字符串下标(可选) '表示是数组,类型名 '为标准类型,每个元素的类型可以不同Dim 自定义函数名 As 自定义类型名 '以自定义函数名来调用自定义类型集合ReDim 函数名.数组名[(下标)] '以访问对象中属性的方法来访问自定义数组的值函数名.元素名=表达式 '以访问对象中属性的方法来给元素名赋值Private Type Zidingyi '创建用户自定义的类型。ID As Integer '定义元素的数据类型。Name As String * 20 '最多20个字符shuzu() As String '动态数组Phone As Long '长整型HireDate As Date '日期时间型End TypePrivate Sub Command3_Click()Dim Hanshuming As Zidingyi '调用自定义类型集合Hanshuming.ID = 2ReDim Hanshuming.shuzu(3)Hanshuming.shuzu(1) = "给动态数组赋值"Text1.Text = Hanshuming.IDText2.Text = Hanshuming.shuzu(1)Text3.Text = Hanshuming.HireDateEnd Sub With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。不能用一个 With 语句来设置多个不同的对象。建议您不要跳入或跳出 With 块,这样的话临时变量将保留在内存中,直到您退出该过程With 变量名 '在一个单一对象或一个用户定义的类型上执行一系列的语句.元素名=表达式 '可以省略变量名来访问自定义类型集合的元素体..........数组名[(下标)]=表达式 End WithPrivate Sub Command4_Click()Dim C As Zidingyi '调用自定义类型集合With Form1 '在窗体对象中执行多行语句.caption = "缺省对象名".Left = 3333 '横坐标.top = 3333 '纵坐标With C.ID = 5 '相当于Form1.Zidingyi.IDReDim .shuzu(3).shuzu(3) = "动态数组"End WithEnd WithText1.Text = C.IDText2.Text = C.shuzu(3)Text3.Text = C.HireDateEnd Sub 一、驱动器列表框,目录列表框,文件列表框的重要属性.事件1)驱动器列表框(DriveListBox):用来显示当前机器上的所有盘符Drive属性 '包含当前选定的驱动器名Drive1. Drive="C"Change '驱动器(单击)和目录列表框(双击)内容改变的事件2)目录列表框(DirListBox) :用来显示当前盘上的所有文件夹Path属性 '包含当前目录和文件列表框路径Dir1.Path="C:\WINDOWS"ListIndex '返回或设置控件中当前选择项目的索引ListCount '返回控件的列表部分项目的个数Click '用于目录或文件列表框的单击事件3)文件列表框(FileListBox) :用来显示当前文件夹下的所有文件名Pattern属性 '决定显示的文件列表框文件类型File1.Pattern="*.BMP"FileName属性 '包含选定的文件列表框文件名MsgBox (File1.FileName)DblClick '用于文件列表框的双击事件PathChange '用于文件列表框的改变Path属性时的事件PattenChange '用于文件列表框Pattern属性改变时的事件4)常用的文件操作语句和函数-----------------------ChDrive "驱动器" '改变当前驱动器CurDir [(驱动器)] '返回一个驱动器的当前目录,驱动器缺省值时返回当前驱动器目录路径ChDir 文件夹名 '改变当前操作目录路径,但不改变系统默认驱动器路径MkDir 文件夹名 '创建一个新的目录RmDir 文件夹名 '删除没有文件的一个存在的空目录Kill 文件名 '删除文件可以使用通配符*,?FileCopy 源文件名 目标文件名 '复制一个未打开的文件Name 旧文件名 AS 新文件名 '重新命名一个未打开的文件或目录Refresh 属性 '当目录结构发生变化时可以用来更新列表FreeFile[(参数)] '生成一个尚未使用的文件号,0-缺省值反回1-255,1-返回256-511二、常用语句和事件:Dir1.Path = Drive1.Drive '返回驱动器下的目录列表File1.Hidden = False '不以原控件的属性特征显示文件File1.Path = Dir1.Path '返回选中的文件夹路径下的文件列表File1.Pattern = Text1.Text '则更新文件列表框指定的类型Text1.SelStart = 0 '返回选择出的范围起点Text1.SelLength = Len(Text1.Text) '返回选择出的范围长度On Error GoTo DriveHandler '一个错误发生时无条件跳到行号处继续执行On Error Resume Next '一个错误发生时继续执行发生错误语句之后的语句On Error GoTo 0 '禁止当前过程中任何已启动的错误处理程序setfocus '将焦点移至指定的控件或窗体 GotFocus() '焦点进入对象或子控件事件Click() '单击事件Unload Me '从内存中卸载当前窗体Unload(Cancel As Integer) '退出事情RGB(red, green, blue) '返回红蓝绿0~255之间的颜色object.Size [= number] '返回指定路径中的字体大小值三、文件的有关概念记录 :计算机处理数据的基本单位(由若干个相互关联的数据项组成)文件 :记录的集合,相当于一张表。文件类型:顺序文件、随机文件、二进制文件。访问模式:计算机访问文件的方式(VB中有顺序、随机、二进制三种访问模式)------------顺序访问模式的文件的打开,写入,关闭,读出------------------------1)Open “文件名” For 模式 As [#] 文件号 [Len=记录长度] '打开文件文件名 : 可以是字符串常量或变量,可以包括目录、文件夹及驱动器盘符模式 : 可以是OutPut,打开写入;Input,打开读入;Append,打开加入记录文件号 : 代表一个被打开的文件,在关闭之前不可以被其它文件所使用记录长度: 随机访问方式时该值就是记录长度。顺序文件时该值就是缓冲字符数。2)Print #文件号,[输出列表] '把列表的数据一次性写入文件号里3)Write #文件号,[输出列表] '把列表用逗号分隔的数值或字符串表达式写入文件号里4)Close [#]文件号[,[#]文件号]…… '关闭指定的文件号5)Input #文件号,变量列表 '从文件中读出数据分别赋给指定的变量与Write #配套 6)Line Input #文件号,字符串变量 '读出一行数据赋给变量,与Print #配套7)Input$(读取的字符数,#文件号) '该函数可以读取指定数目的字符'读文件有关的两个函数,LOF():返回某文件的字节数,EOF():检查指针是否到达文件尾------------随机访问模式的文件的打开,写入,关闭,读出--------------Open “文件名” For Random As [#] 文件号 [Len=记录长度] '打开文件'打开后可以同时写入和读出,但要指明记录的长度,默认为128字节Close #文件号 '关闭文件Get [#]文件号,[记录号],变量名 '从文件号中记录号指定的内容读入变量名中Put [#]文件号,[记录号],变量名 '将变量内容写入文件号的指定记录号位置里------------二进制访问模式的文件的打开,写入,关闭,读出--------------Open “文件名” For Binary As [#] 文件号 [Len=记录长度] '存放二进制码到文件中Close #文件号 '关闭文件 Sub shuaxin() '定义一个默认为公有的Public过程Label1.Caption = "当前驱动器 " & Drive1.DriveLabel2.Caption = "当前文件名 " & File1.FileNameLabel3.Caption = "当前文件夹 " & Dir1.PathLabel4.Caption = "文件的位置 " & File1.PathLabel5.Caption = "程序的目录 " & CurDir(Dir1.Path)Label6.Caption = "系统的目录 " & CurDir()End SubPrivate Sub Form_Load()Drive1.Drive = "e:" '设置当前驱动器End SubPrivate Sub Command9_Click()EndEnd SubPrivate Sub Text2_Change() 'Text内容属性改变事件File1.Pattern = Text2.Text '显示指定扩展名的文件End SubPrivate Sub Drive1_Change() 'Drive属性改变事件On Error Resume Next '乎略选择光驱时的出错Dir1.Path = Drive1.Drive '返回驱动器下的目录列表File1.Path = Dir1.Path '返回目录下的文件列表Call shuaxin '调用公有子过程End SubPrivate Sub Dir1_Change() 'Path属性改变事件File1.Path = Dir1.Path '返回目录下的文件列表Call shuaxin '调用公有子过程End SubPrivate Sub File1_Click() '文件列表单击事件Text1.Text = File1.FileName '返回选中的文件名Call shuaxin '调用公有子过程End SubPrivate Sub Command1_Click() '建立文件夹Dim A As StringA = InputBox("请输入文件夹名", "创建文件夹")Text1.Text = A '检查新建文件夹名On Error GoTo tiao '当文件夹已经存在时出错跳过MkDir Dir1.Path + "\" + A '在当前文件夹目录下创建a文件夹Dir1.Refresh '更新文件夹列表tiao:Call shuaxin '调用公有子过程End SubPrivate Sub Command2_Click() '删除文件夹On Error GoTo t '文件夹不存在时出错,跳过RmDir Dir1.Path '删除当前目录下的空文件夹t:Call shuaxin '调用公有子过程End SubPrivate Sub Command3_Click() '建立文件名Dim B As StringB = InputBox("请输入文件名", "创建文本文件")Open Dir1.Path + "\" + B + ".TXT" For Append As #1Close 1 '在当前目录下打开加入记录时如果当前文件不存在会自动创建File1.Refresh '刷新文件列表Call shuaxin '调用公有子过程End SubPrivate Sub Command4_Click() '删除文件名Kill Dir1.Path + "\" + File1.FileNameFile1.Refresh '刷新文件列表Call shuaxin '调用公有子过程End SubPrivate Sub Command5_Click() '打开显示文件内容On Error GoTo shanDim WBNyongOpen Dir1.Path + "\" + File1.FileName For Input As #1Text1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)shan:Call shuaxin '调用公有子过程End SubPrivate Sub Command6_Click() '保存文本内容On Error GoTo Wshan '没有选择文件名时出错我闪Open Dir1.Path + "\" + File1.FileName For Output As #1Print #1, Text1.Text '写入文本信息Close #1Wshan:Call shuaxin '调用公有子过程End SubPrivate Sub Command7_Click() '复制文件A到B中Dim C As String, D As StringOn Error GoTo shan '文件已经存在时出错,跳过C = Dir1.Path + "\" + File1.FileNameD = Dir1.Path + "\" + File1.FileName + "(复件)"FileCopy C, D '复制文件File1.Refresh '刷新文件列表shan:Call shuaxin '调用公有子过程End SubPrivate Sub Command8_Click() '从新命名文件名On Error GoTo Wshan '没有选择文件名时出错闪人Dim E As String, F As StringE = Dir1.Path + "\" + File1.FileNameF = InputBox("请输入新文件名", "修改文件名")Name E As Dir1.Path + "\" + F + ".TXT"File1.SetFocus '将焦点移至文件列表File1.Refresh '刷新文件列表Wshan:Call shuaxin '调用公有子过程End Sub

评论