VB数组不能嵌套
VB结构体(可以是私有或者公有):
Private Type mtypXlsTagInfo
strTagNo As String
strLineNo As Long
strSheetName As String
End Type
VB中可以使用静态变量
Static a As Integer
Private Sub Command1_Click()
a = a + 1
Debug.Print a
End Sub
VB的成员分为:
全局成员:定义在Pulbic模块中的成员,可被任何语言元素直接访问。
共享成员:定义在类型(类、接口等)中,标以以Shared的成员。这种成员为该类型所有对象共享。
类型成员:定义在非模块的类型中,即类、接口、委派、枚举、结构体中的成员,他们只能以对象形式访问,每个对象有自己的一套成员,互相不共享。
过程变量:定义在过程(子程序、函数、属性、事件)内部的变量,只能在定义他们的过程中使用,如不定义成Static,生命周期为过程执行期间。
定义在过程中,但特定为定义在For、Do、While等循环语句中,这些变量也可以在整个过程中访问,但生命周期仍和过程变量一致
,这点在VB.net有了改进,循环中的变量不能在循环外部访问。
(VB中最小作用域为函数或过程作用域,因而函数过程中所有变量都为以全过程为作用域的变量,所以VB中所有变量声明应放在函数过程的头部)
循环语句中变量作用域 :定义在循环语句中的变量并非每次重新创建新空间,而是一直使用一个空间.而更为关键的在于不仅变量不会重新分配空间(就这点在VB.net中也是如此),而且除了一次初始化为初始值外,在循环过程都将保留上次结果的值,因此当在循环中定义变量时间应该注意将变量在每次循环中进行重新初始化(在C类语言中每次初始化是必须的,只是在vb中由于有了首次初始化而容易让人忽略掉初始化重要性).
下面执行结果为2244668810
下面执行结果为1133557799(虽然按照其他语言本应存在未定义错误,因而循环中只要是曾经出现过定义,则以后次循环都会发现该变量的存在)
Public:表示对象的该成员可以被其他任何语言元素直接访问。
Protected:表示对象的该成员可以被该类型和该类型派生类型的成员访问,不能被其他成员访问。
Friend(默认):表示对象的该成员可以被同一个程序集内的语言元素访问。不嫩个被程序集以外的语言元素访问。
Protected Friend:表示对象的该成员不但可以被该类型和该类型派生类型访问,也可以被统一个程序集内的其他语言元素访问。
Private:表示对象成员只能被本类型内部的语言元素访问
VB中直接初始化 Dim objData As New clsData
如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例 ,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。注意是在第一次引用时间初始化,而并非Dim语句之后,因而倘若对象不被引用,则将不初始化
VB中参数的写法 Workbooks.Open(strInputCSVFilePath, ReadOnly:=True )
文件读写
Open "TESTFILE" For Binary Access Read Lock Read As #1
Print #文件号,变量1,变量2,…变量n:按顺序将各变量的值写入顺序文件
Input #文件号,变量表….:读顺序文件,进行与Print相反的操作
Write # 语句会在项目和用来标记字符串的引号之间插入逗号。
FreeFile():取得一个未使用的文件号
Call 语句 将控制权转移到一个Sub过程,Function过程,或动态连接库(DLL)过程。
调用一个过程时,并不一定要使用Call关键字。如果使用Call关键字来调用一个需要参数的过程,argumentlist就必须要加上括号。如果省略了Call关键字,那么也必须要省略argumentlis外面的括号。如果使用Call语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。
Show
方法
用以显示MDIForm或Form对象。不支持命名参数
如果调用Show方法时指定的窗体没有装载,Visual Basic将自动装载该窗体。
(*个人观点) 当由窗体类本身直接调用时Show时,将把该窗体类的即时对象进行显示,即时对象的卸载可以由其内部卸载,也可以通过"Unload +Form类"卸载.(Form的ShowModal属性则是用来定时即时对象默认显示状态的),即时对象仅有一个多次调用Show不会显示多个窗口
Unload
从内存中卸载窗体或控件。
Unload object
object 所在处是要卸载的Form对象或控件数组元素的名称。
当所占内存另有它用,或需要重新设置窗体、控件的属性为初始值时,就有必要卸载窗体或控件。
当窗体卸载之后,所有运行时放到该窗体上的控件都不再是可访问的。在设计时放到该窗体上的控件将保持不变;但是,当窗体重新加载时,在运行时对这些控件及其属性的任何更改将丢失。所有对于窗体属性的更改也将丢失。对窗体上任何控件的访问会导致窗体重新加载。
vb里form.visible=false和unload me区别:前者是隐藏窗体,但是还是占用内存的,随时可以再被调出来;后者是完全释放那个窗体所占的系统资源
EXIT与END
exit for 退出for循环
With
With语句可以嵌套使用, 但是,由于外层 With 块成员会在内层的 With 块中被屏蔽住,所以在内层的 With 块中, 必须 使用完整的对象引用来指出在外层的 With 块中的对象成员。
With与End With之间的语句执行期间一个包含对该对象引用的临时变量将保留在内存中,直到您退出该过程,通过使用临时变量可以提高程序效率,避免对对象多次引用。
项目
非引用的库或者资源,应及时清理,避免因此产生某些不必要问题