Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

VB的零散学习

时 间:2012-06-05 09:35:53
作 者:风行   ID:16058  城市:江阴
摘 要:VB中的常量
常量是一个在程序运行时不会被改变的数值或字符串。通过声明和使用常量的标识符,代替一个在程序执行时不会被改变的值,在程序维护时只要修改这个常量的值,即可改变程序中所有以这个常量命名的值,从而使程序的维护变得简单。
以下是局部常量的声明:
Const Tod As Date=#8/20/2008#       '日期型常量
Const Bol As Boolean =True
Const Inte As Integer=100
Const A As Integer=100,B As String="101"


正 文:

VB 字符串处理函数集

mid(字符串,从第几个开始,长度) 在[字符串]中[从第几个开始]取出[长度个字符串]
例如 mid("小欣无敌",1,3) 则返回 "小欣无"

instr(从第几个开始,字符串1,字符串2) 从规定的位置开始查找,返回字符串2在字符串1中的位置
例如 instr(1,"小欣无敌","小") 则返回 1,instr(2,"小欣无敌","小"),则返回 0 。 0 表示未找到

InStrRev(字符串1,字符串2,从第几个开始) 从规定的位置开始,从后住前查找,返回字符串2在字符串1中的位置,此处注意,虽是从后住前查找,但是返回的值还是从前往后算的。
例如 instrRev("小欣无敌","小",2) 则返回 2 ; instrRev("小欣无敌","欣",1) 则返回 0 ,因为它从"小欣无敌"的第1个字开始往前查找,所以找不到 。0 表示未找到

left(字符串,长度) 从[字符串]的左边开始返回[长度]个字符
例如 Left("小欣无敌,3) 则返回 "小欣无"

right(字符串,长度) 从[字符串]的右边开始返回[长度]个字符
例如 Right("小欣无敌",3) 则返回 "欣无敌"

ucase(字符串) 返回[字符串]的大写形式,只对英文字符有效
例如 ucase("xiaoXINwuDi") 则返回 "XIAOXINWUDI"

lcase(字符串) 返回[字符串]的小写形式,只对英文字符有效
例如 lcase("xiaoXINwuDi") 则返回 "xiaoxinwudi"

asc(字符) 返回[字符]的ascii编码,若有多个字符,则只返回首字符的ascii编码,和Chr()函数是一个可逆的过程
例如 asc("小") 则返回 -12127 ; asc("小欣无敌") 也返回 -12127

chr(ASCii编码) 返回[Ascii]编码所代表的字符,和Chr()函数是一个可逆的过程
例如 chr(-12127) 则返回 "小" ;chr(asc("小")) 则返回"小"(这里是为了说明asc和chr的可逆性,例用此特性可以加密文本)

trim(字符串) 返回去掉了前、后之后的[字符串]
例如 trim(" 小 欣 无敌 ") 则返回 "小 欣 无敌" ,中间的空格不受任何影响

string(个数,字符) 返回[个数]个[字符]
例如 string(3,"小") 则返回 "小小小" , 而 string(3,"小欣无敌") 也返回 "小",只有首字符才有效

space(个数) 返回[个数]个空格
例如 space(5) 则返回 " "

strconv(字符串,转换的类型) 将字符串转成指定的类型。常用的类型只有两个,vbwide 半角转成全角,vbNarrow 全角转成半角
例如 strconv("xiao",vbwide) 则返回 "XIAO",而strconv("XIAO",vbnarrow) 则返回 "XIAO"
’备注 vbwide = 4 ,vbnarrow = 8

len(字符串) 返回[字符串]的长度
例如 len("小欣无敌") 则返回 4

Vb如何创建类?

answer1:

You should add a class module into the project.
choose project and click the add class module submenu.
Then please cofigure the property of the class .

you can declare the members and methods or property

'it's members
private mAmericanId as string
private mAmericanLen as integer
private enum mAmericanColor
green
red
.
.
.
end enum

....
....

' properties
public property let PigId ( vPigId as string)
mpigId = vPigId
end property
public property get PigId ( ) as string
mpigId = vPigId
end property
.....

'methods
public sub savetodb()

'you can add code to save the data to the table or database

end sub
.....

You add any method you want like to check the data and etc.

After that you can use the class in you program


answer2:

添加 类模块

类模块名就是类的名称

应用:
dim mycls as new CMyClass 'CMyClass是类名

 

1、VB大小写问题

利用UCase函数将字符串转换为大写,用LCase函数将字符串转换为小写

如:Private Sub Command1_Click()

Text1.Text=UCase(Text1)

End Sub

2、如何判断字符串是否为空Null

不可以使用“If 变量=Null Then”语句,因为Null在任何表达式中返回结果都为Null,要用IsNull函数进行判断。例如:

Private Sub Command1_Click()

Dim i

i=Null

If IsNull(i)=True Then

MsgBox “为空NULL”

Else

MsgBox “不为空”

End If

End Sub

3、End语句的使用技巧

End语句会重置所有模块级别变量和所有静态局部变量。End语句不调用Unload、QueryUnload、Terminate事件或任何其他Visual Bisic 6.0代码,只是生硬的终止代码执行,类模块创建的对象被破坏,由Open语句打开的文件被关闭,并且释放程序所占用的内存。其他程序的对象引用无效。

End语句提供了一种强迫终止程序的方法。Visual Basic 6.0 程序正常结束时,应该卸载所有窗体。只要没有其他程序引用该程序公共类模块创建的对象,就并无代码执行,程序将立即关闭。如本例,执行End语句后打开的所有窗口将全部被关闭。

Private Sub Command1_Click()

End ’关闭所有窗口

End Sub

Private Sub Form_Load()

Command1.Caption=”关闭”

Form2.Show

End Sub

4、VB中#1是什么意思

Open myfile1 For Input As #1

Open myfile2 For Output As #2

具体解释一下

解释:第一行是打开myfile1文件并且给它编号为#1,

第二行是打开myfile2文件并且给它编号为#2,

以后在调用这2个文件时直接调用其编号即可,比如在关闭myfile2文件时可以这样:

close #2

5、请问vb中的 !id = Text1.Text 中的“!”叹号什么意思

完整的应该是:

表!字段名=xxx 或 记录集!字段名=xxx

叹号表示引用某个表或记录集下的某个字段(这里是字段ID)

6、数组学习

A、静态数组用Dim语句来声明:Public|Private|Dim 数组名(下标)[AS 数据类型]

Public: 用于声明可在工程中所有模块的任何过程中使用的数组;

Private:用于声明只能在包含该声明的模块中使用的数组;

Dim:用于模块或过程级别的数组

如:Dim a(3) As String ‘声明String型数组a,包含4个数组元素即a(0),a(1),a(2),a(3)

Dim b(6) ‘声明Variant型数组b,包含7个数组元素即b(0)~b(6)

Dim c(2 To 7) As Integer ‘声明Integer型数组c,包含6个数组元素即c(2)~c(7)

 

B、动态数组使用ReDim(在过程级别中使用的语句)声明:

ReDim [Preserve] 数组名(下标) [As 数据类型]

Preserve:可选的关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。

如 :ReDim a(10) As Long

动态数组还可以用Dim语句声明,只要将下标定义为空,并在需要改变这个数组大小时,使用ReDim语句重新声明这个数组的下标。如: Dim a()------然后用ReDim Preserve a(10)

C、二维数组的声明

ReDim a(3,2) As Long ‘声明动态二维数组

Dim b(3,4) As String ‘声明静态二维数组

Dim c(5,9) ‘声明默认Variant数据类型静态二维数组

Dim d(1 To 9,1 To 9) ‘声明数组下标从1到9的二维数组

8、变量声明方式

通过语句定义的声明方式称为显式声明,也可以不声明而直接使用,这种方式称为隐式声明。如果程序中出现了变量名拼写错误,那么程序会将其认为是一个新的变量,从而导致应用程序出现严重错误。因而在使用变量前最好还是声明比变量。如果希望不允许程序使用未声明的变量,可以使用Option Explicit语句来强制声明变量,Option Explicit是在模块级中使用的语句。

9、局部变量

局部变量通过Dim或者Static语句声明变量,通过Dim语句声明的变量在每次调用该过程时,程序将重新为这个变量赋一个初始值,其值在过程结束后被释放;而用Static声明的变量在每次调用该过程时,不会被程序重新赋一个初始值,其值在过程结束后将被保留,下次再调用该过程时,变量的初始值是上次调用结束时被保留的值。使用Static语句声明的变量称为静态变量。

使用Static语句声明的静态变量,可以计算用户单击按钮的次数,然而Dim语句定义的变量在每次单击按钮时,其值将仍为初始化默认值。

10、Like运算符

Like运算符比较两个字符串是否匹配,如果匹配则返回True,否则返回False,但当两个字符串中有一个是Null时,则返回Null。

语法:result=string Like pattern

例如,Like运算表达式在pattern参数中参加入通配符进行运算

Dim Bo As Boolean

‘?可以代替任何一个单一字符,*可以代替任何个数的字符

Bo=”BAT4156Hdrg” Like “B?T*” ‘返回True

Bo=”CAT4156Hdrg” Like “B?T*” ‘返回False

‘#可以代替0~9任何数字

Bo=”a8a” Like “a#a” ‘返回True

‘[A-Z]的字符代替原字符

Bo=”D” Like “[A-Z]” ‘返回True

‘不在[!A-Z]的字符代替原字符

Bo=”D” Like “[!A-Z]” ‘返回False

Bo=”aO54b” Like “a[L-P]##[!c-e]” ‘返回True

 

Pattern中可以参与运算的通配符

 

通配符

 

说明

 

 

任何单一字符

 

*

 

任何个数的字符(包括空子符)

 

#

 

任何一个数字(0-9)

 

[]

 

[]中的任何单一字符

 

[!]

 

不在[!]中的任何单一字符

 

11、程序编写规范

●单行分成多行语句,用续行符号(“_”)来将一条语句分成多行,如:

Private Sub Command1_Click()

Label1.Caption=”明日科技有限公司是一家诉讼咖啡色看到返回山三方可撒复” &_

“三代粉红色地脚螺丝定界符滤色镜福连锁店节流阀司机带来极大三六九等” &_

“sdfsdfsdfsdfsdfsdfsddsf。”

End Sub

说明:”_”符号是用来连接代码的,,所以在连接字符串的时候需要在”_”符号前加入字符串连接符”&”

● 一行多条语句

一行多条语句通过使用”:”将一行中的多条语句隔开,从而将一些短小而有联系的语句写在同一行,如:Dim a As Long:a=2205

●添加多行代码注释块:选中要注释的代码------〉单击“编辑”工具栏中的“设置注释块”工具栏按钮,单击“解除注释块”按钮清除代码前的“'”.

●If…Then和要执行的语句写在同一行,就可以省掉End If 语句

12、IIF语句

IIF(<表达式>,<值或表达式1>,<值或表达式2>),如果表达式为True,则返回值或表达式1,否则返回值或表达式2。

如:Print IIF(15>16,15,16) ‘输出结果为16

13、Is,To等关键字在Select Case语句中的使用

Is ,To语句用在Case之后,用来限定值的范围,Is关键字可以与关系运算符连用,表示取值的一个条件;To关键字指定取值的范围,如A~Z之间可以写成A To Z,如下:

Private Sub Command1_Click()

If IsNumeric(Text1.text) Then

Select Case CLng(Text1.Text)

Case Is=0

MsgBox “等于0”,vbOKOnly,”结果”

Case Is<0

MsgBox “小于0”,vbOKOnly,”结果”

Case Is>0

MsgBox “大于0”,vbOKOnly,”结果”

End Select

End If

End Sub

 

Private Sub Command1_Click()

Select Case Text1.Text

Case 0 To 9

MsgBox “输入的是数字”,vbOKOnly,”提示”

Case “a” To “z”

MsgBox “输入的是小写字母”,vbOKOnly,”提示”

Case “A” To “Z”

MsgBox “输入的是大写字母”,vbOKOnly,”提示”

End Select

End Sub

14、如何让vb众多窗体中的一个成为主窗体?

答:如何让vb中很多个窗体中的一个作为程序运行时第一个跳出来的窗体,一般工程默认的是第一个创建的窗体,但如果要修改可以按照如下方法:project菜单---properties----general选项卡中的“Startup Object”在其中选择一个要作为主窗体的窗体,然后点击“ok”即可。

15、vb点击“X”按钮关闭窗体响应的函数是?

利用Unload语句或者窗体控制菜单中的CLose命令关闭窗体时,可以出发Unload事件,在窗体被卸载时,可以使用Unload事件过程来确认窗体是否应被卸载或者用来指定想要发生的操作,语法:

Private Sub object_Unload(Cancel as Integer)

其中Cancel是一个整数,用来确定窗体是否从屏幕中删除。如果Cancel为0,则窗体被删除,如果Cancel为任何一个非零的值可防止窗体被删除。如下:

Private Sub Form_Unload(Cancel As Integer)

Dim c

c=MsgBox("确认要关闭窗体吗",33,"提示信息")

if c=vbOK Then

End

Else

Cancel=1

End If

End Sub

QueryUnload(Cancel As Integer, UnloadMode As Integer)事件在一个窗体关闭之前发生,并且窗体的QueryUnload事件先于该窗体的Unload事件发生。因此可以模仿上边Form_Unload的程序,在窗体点击了关闭按钮时跳出询问提示框,问是否要关闭窗体,是则退出窗体,否则把Cancel设为一个非零值。

16、vb模态对话框和非模态对话框

如果是模态对话框,则必须处理了这个对话框其他对话框才可以进行操作,非模态对话框不需要处理就可以其他对话框,比如:Log.Show 1 'Log为登陆窗体,show参数为1时,即显示模态对话框,如果不登陆则无法对后边

'的窗体进行操作

Log.Show '默认参数为0 ,创建非模态对话框,不需要登陆都可以对后边的窗体进行操作

17、如何让vb窗体上的最大化最小化按钮不可用,关闭按钮不可见?

如果只让最大化或最小化按钮不可用只要让窗体属性中的MaxButton=False或MinButton=False,如果两个都设置为False,则这两个按钮不可见,如果将窗体属性中的ControlBox设置为False,怎最大化、最小化和关闭按钮都不可见。

18、在Print方法中使用符号“;”可以使接下来输出的内容不换行

例如如下输出三角形*的例子:

Option Explicit

Private Sub Command1_Click()
Dim a As Long, b As Long
Form1.Cls
While a <= 9
a = a + 1
For b = 1 To 23 - a
Print " ";
Next b
For b = 1 To 2 * a - 1
Print "*";
Next b
Print
Wend
End Sub

19、数组的删除操作

如下程序,删除数组中a(2)的值,后边的数据一次往前移

Dim a() as Long

Private Sub Form_Load()

ReDim a(1 To 4) as Long

a(1)=1:a(2)=2:a(3)=3:a(4)=4

Dim i as Long

For i=2 To 3

a(i)=a(1+1)

Next i

ReDim Preserve a(1 To 3)

For i=1 To 3

Debug.Print "a(" & CStr(i) &")=" & CStr(a(i)),

Next i

End Sub

 

VB中如何实现控件大小随窗体大小改变而改变

module1:

Public Type cp
wp As Single
hp As Single
tp As Single
lp As Single
End Type


Form:

Dim ap() As cp
Sub ai()
Dim i As Integer
If Controls.Count > 0 Then
'如果窗体中包括菜单,这时程序将出错
'解决办法:在代码前加"On Error Resume Next"
For i = 0 To Controls.Count - 1
With ap(i)
.wp = Controls(i).Width / Form1.ScaleWidth
.hp = Controls(i).Height / Form1.ScaleHeight
.lp = Controls(i).Left / Form1.ScaleWidth
.tp = Controls(i).Top / Form1.ScaleHeight
End With
Next i
End If
End Sub

Private Sub Form_Load()
If Controls.Count > 0 Then
ReDim ap(0 To Controls.Count - 1)
ai
End If
End Sub

Private Sub Form_Resize()
On Error Resume Next
If Controls.Count > 0 Then
Dim i As Integer
For i = 0 To Controls.Count - 1
Controls(i).Move ap(i).lp * frmMain.ScaleWidth, ap(i).tp * frmMain.ScaleHeight, ap(i).wp * frmMain.ScaleWidth, ap(i).hp * frmMain.ScaleHeight
Next i
End If
End Sub

已经试用,不错的哦~



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助