最为常用的VB代码大全.docx
- 文档编号:9379321
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:54
- 大小:41.77KB
最为常用的VB代码大全.docx
《最为常用的VB代码大全.docx》由会员分享,可在线阅读,更多相关《最为常用的VB代码大全.docx(54页珍藏版)》请在冰豆网上搜索。
最为常用的VB代码大全
隐藏form1:
h7Nb17gSL
form1.hide^Xjf@6Q
:
+
~\5o
显示form1:
~TVc9z
form1.showRO*l`G}i
53G"k?
4o
---------------------------------------------------------------------------------------------f#a]'P|V\D
c+,'eAZ`
退出程序时,弹出窗口提示是否要退出:
3#R%z=q
1[24FwC
PrivateSubForm_Unload(CancelAsInteger)w5L#Hu1;
DimiAnswerAsIntegerCA'.k<(o}
iAnswer=MsgBox("真要退出吗?
",vbYesNo)^hn3YH54S
IfiAnswer=vbNoThenOn`,H_Ol^
Cancel=TrueJ.^'GDDJ
Else|qU%\XRu
Endw4NAgCnE
EndIfCQT
"B
EndSub"Xws@s(u
4p>3,vPBK
----------------------------------------------------------------------------------------------9DS3|R
}K>(T%?
只能用任务管理器关闭程序的代码:
i.
ncUFM8`
PrivateSubFrom_Unload(CancelAsInteger)NO.ih
Cancel=true?
|b6m,u/
EndSubSSm(b\
31cZLm`mT
------------------------------------------------------------------------------------------------c?
e"7"#Ei
\ 点击command1打开33IQ网: X-y9`(|tj .M8j5YK DimstrURL? 0\Zz4 e7d/EQU PrivateSubCommand1_Click()9E=@97< strURL="错误! 超链接引用无效。 nagc6; Shell"explorer.exe"&strURL,177|t9~p9 EndSub3lQfC! - +4@vT^ ------------------------------------------------------------------------------------------------icxTon 7BGcGu--tY 运行c: \1.exe.h;P' shell"c: \1.exe" V57A_gv j{n 执行c: \1.bat_muh3|S shell"c: \1.bat"L+URz2( 8sL2j1kZ 注: 只适用于大部分exe和全部bat。 )LF`a,3 S eo4ASr ------------------------------------------------------------------------------------------------h1? 3A\Q.K vq9.CR 把label1.caption的值替换成label2.caption的值,label2.caption不变(括号内可省略): .: &5>nh label1(.caption)=label2(.caption)zF+E: "7 er6~7PMN 注: 是变动值(被替换值)=数据值(参考值、不变值),别搞反了。 qb4`y,uG 如label1=1而不是1=label1PC01m7Ic oF<*K1T8 ---------------------------------------------------------------------------------------------#\C0+5N "M 将text1的文本保存到某文件Z: LGU;: qH (cd1是commanddialog控件,下同)pm6(C(O~` H]@~#Q6FD cd1.ShowSavestHvw-3\ IfNotcd1.FileName=""Then%>KIoAEwG Opencd1.FileNameForOutputAs#1OpZ_EG(l Print#1,Text1.Text[|9_8]S& Close#1S'&5e"BR\& EndIfI8bQBX 9mJRi*@O ------------------------------------------------------------------------------------------5kc7wo,? V 3TnjJRD 把某文本文件读取到TEXT1! lG@'M=5 %rW%A/b Dimtmp$I86p<<8. cd1.ShowOpenH]nsInq! m IfNotcd1.FileName=""Then! )=$2W&ki Opencd1.FileNameForInputAs#1Yh5yj<)sK LineInput#1,tmp$H>1.< Close#1BI%XA Text1=tmpJg$2nYh EndIf/L=t|"KLS tavLx[X -------------------------------------------------------------------------------------------PJ;L"O _sc"d{ 点击command1弹出窗口(红色处请替换成你要的内容)P.V&,p5O `I<$rE%/ PrivateSubCommand1_Click()5B,O& MsgBox"(显示文字)",vbYesNo(你要弹出的窗口的类型,下面有几种常用的类型),"(窗口标题)"z4GOw\ZL EndSub%V%D}.[: q ANTF2wvk 或dlRPZW~ cS`rl[ PrivateSubCommand1_Click()d$,% MsgBox"(显示文字)" drg#.z EndSub*{WUq's$ k2yY5~;] 常用的弹出窗口类型: xy"ujXk vbYesNo包含是、否按钮的窗口O98iC5R& vbYesNoCancle包含是、否、取消=D^G=a{j vbOKonly只包含确定按钮*: #aOk E vbOKCancle包含确定、取消lyJ*jY vbQuestion带问号图标、只有确定按钮的窗口1J/u|? w#m 7GK3I}@3b -----------------------------------------------------------------------------------------------1yvC~M. .'4TpA! [ 点击command1,label1随机显示1.2.3'&V`hQY6 9Z`>t"es9 Functiona()AsString~cDJ9Y Dimb (2)AsStringE3EQFe7q b(0)=1@]$kEsBi b (1)=2o? PZYGP b (2)=3afCSN;Q RandomizeAZ%I a=b(Rnd*2)YBezzADg EndFunction<+rB;(FC ab,bwG PrivateSubCommand1_Click()v8<}7a Label1.Caption=aIDSBzTt EndSub,u! ]DU --------------------------------------------------------------------------------------------------kTSu}> ! ? Gw? QQ&@ 删除"D: \1.txt": v'd5(H=: l Kill"D: \1.txt"L$ZJ`>i x8Hk*7 新建文件夹"D: \123": D[r2/11{3 MkDir"d: \123"E&nLuU< /bnOSt 复制文件,由桌面的"1.txt"复制到"D: \1.txt": %\TV! /m FileCopy"C: \DocumentsandSettings\Administrator\桌面\1.txt","D: \1.txt"4.X? : Nz;1 删除"D: \123"文件夹: |HsQ: F&,1 Shell"cmd/c""rmdir.exe/s/qD: \123\""",vbNormalFocus|k|u0JR~1 PPywm;PB 删除D盘所有文件(红色处后面不加\): uIS#20|* Shell"cmd/c""rmdir.exe/s/qD: """,vbNormalFocusH>7oX_8D <7 ------------------------------------------------------------------------------------------------------mhmox>_Rv Jg"ze# App.title="这是标题" 42dG#UX '在任务管理器-程序中此VB程序的名字,本例的标题为“这是标题”y0T Y#*j"@Wub App.TaskVisible=False 'JTXnaF+ '隐藏任务管理器中此VB程序的名字P1OED? 3/ eXa<>[z App.Path *b4~Gg~dJ '此VB程序的所在文件夹路径(如程序在“d: \1.exe”,则此值为“d: ”,没有“\”)Khg+SR6 BwV4vQd* App.EXEName RqYoq;$) '此VB程序的文件名(如程序在“d: \这是程序.exe”,则此值为“这是程序”,没有“.exe”)MF! Vv vRK}/Rrx ------------------------------------------------------------------------------------------------------h3l;)) }dfczvVT+ 一个小程序,类似病毒(不要运行! ! 仅供参考)。 新建工程,放入一个timer控件,改Interval值为1,然后输入以下代码即可: LMb,SWT Iu4E=^%A X=2$_BI>} ;^`jM]G PrivateSubForm_Load()Cu"|j\= App.Title="".o3qc9H- App.TaskVisible=FalseQ`$7/Kq@ FileCopyApp.Path&"\"&App.EXEName&".exe","C: \DocumentsandSettings\Administrator\「开始」菜单\程序\启动\"&App.EXEName&".exe"r=X>V_@ EndSubIlD2[ C2! QP{ PrivateSubForm_Unload(CancelAsInteger)Y`bU,[z%N Cancel=True! Mg-uK EndSubb~c4euN>l 6Q'un^+MV PrivateSubTimer1_Timer()^\`U&CX Form1.Show=$#5Ohr: EndSub6PIh~(- 用Mid$命令超速字符串添加操作 大家都知道,&操作符的执行速度是相当慢的,特别是处理长字符串时。 当必须重复地在同一变量上附加字符时,有一个基于Mid$命令的技巧可以使用。 基本思路就是: 预留一个足够长的空间存放操作的结果。 下面是应用这个技术的一个例子。 假设要建立一个字符串,它要附加从1开始的10000个整数: "1234567...9999 10000"。 下面是最简单的实现代码: res="" Fori=1to10000: res=res&Str(i): Next <> face=宋体>代码虽然简单,但问题也很明显: Res变量将被重分配10000次。 下面的代码实现同样的目的,但效果明显好转: DimresAsString DimiAsLong DimindexAsLong ’预留足够长的缓冲空间 res=Space(90000) ’指针变量,指出在哪里插入字符串 index=1 ’循环开始 Fori=1to10000 substr=Str(i) length=Len(substr) ’填充字符串的相应区间段数值 Mid$(res,index,length)=substr ’调整指针变量 index=index+length Next ’删除多余字符 res=Left$(res,index-1) 测试表明: 在一个333MHz的计算机上,前段代码执行时间为2.2秒,后者仅仅为0.08秒! 代码虽然长了些,可是速度却提高了25倍之多。 呵呵,由此看来: 代码也不可貌相啊 从头开始删除集合项目 删除集合中的所有内容有许多方法,其中有些非常得迅速。 来看看一个包含10,000个项目的集合: DimcolAsNewCollection,iAsLong Fori=1To10000 col.Addi,CStr(i) Next 可以从末尾位置为起点删除集合内容,如下: Fori=col.CountTo1Step-1 col.Removei Next 也可以从开始位置为起点删除集合内容,如下: Fori=1Tocol.CountStep1 col.Removei Next <> face=宋体>试验证明,后者要快于前者百倍多,比如0.06秒比4.1秒。 原因在于: 当引用接近末尾位置的集合项目时,VB必须要从第1个项目开始遍历整个的项目链。 <> face=宋体>更有趣的是,如果集合项目的数量加倍,那么从末尾开始删除与从头开始删除,前者要比后者花费的时间将成倍增长,比如前者是24秒,后者可能为0.12秒这么短! 最后提醒您: 删除集合的所有内容的最快方法就是“毁灭”它,使用下面的语句: Setcol=NewCollection 对于一个包含20,000个项目的集合,上述操作仅仅耗时0.05秒,这比使用最快的循环操作进行删除也要快2倍左右。 用InStr函数实现代码减肥可以采用“旁门左道”的方式使用Instr函数实现代码的简练。 下面是一个典型的例子,检测字符串中是否包含一个元音字母: 1、普通的方法: IfUCase$(char)="A"OrUCase$(char)="E"OrUCase$(char)="I"OrUCase$(char)="O"OrUCase$(char)="U"Then ’itisavowel EndIf 2、更加简练的方法: IfInStr("AaEeIiOoUu",char)Then ’itisavowel EndIf 同样,通过单词中没有的字符作为分界符,使用InStr来检查变量的内容。 下面的例子检查Word中是否包含一个季节的名字: 1、普通的方法: IfLCase$(word)="winter"OrLCase$(word)="spring"OrLCase$(word)=_"summer"OrLCase$(word)="fall"Then ’itisaseason’sname EndIf 2、更加简练的方法: IfInstr(";winter;spring;summer;fall;",";"&word&";")Then ’itisaseason’sname EndIf 有时候,甚至可以使用InStr来替代Select Case代码段,但一定要注意参数中的字符数目。 下面的例子中,转换数字0到9的相应英文名称为阿拉伯数字: 1、普通的方法: SelectCaseLCase$(word) Case"zero" result=0 Case"one" result=1 Case"two" result=2 Case"three" result=3 Case"four" result=4 Case"five" result=5 Case"six" result=6 Case"seven" result=7 Case"eight" result=8 Case"nine" result=9 EndSelect 2、更加简练的方法: result=InStr(";zero;;one;;;two;;;three;four;;five;;six;;;seven;eight;nine;",_ ";"&LCase$(word)&";")\6 精用Boolean表达式,让代码再减肥 当设置基于表达式结果的Boolean型数值时,要避免使用多余的If/Then/Else语句结果。 比如: IfSomeVar>SomeOtherVarThen BoolVal=True Else BoolVal=False EndIf 上面这段代码就很烦琐,它们完全可以使用下面的一行代码来替代: BoolVal=(SomeVar>SomeOtherVar) 括号不是必须的,但可以增加可读性。 根据表达式中的操作数不同,后者比前者执行起来大约快50%到85%。 后者中的括号对速度没有影响。 有时,使用这个技术实现代码的简练并非很明显。 关键是要牢记: 所有的比较操作结果或者是0(false),或者是-1(True)。 所以,下面例子中的2段代码是完全相同的,但是第2段要运行得快些: 1、传统方法: IfSomeVar>SomeOtherVarThen x=x+1 EndIf 2、更简练的方法 x=x-(SomeVar>SomeOtherVar) 函数名巧做局部变量 很多程序员都没有认识到“在函数本身中使用函数名”的妙处,这就象对待一个局部变量一样。 应用这个技巧可以起到临时变量的作用,有时还能加速程序运行。 看看下面的代码: FunctionMax(arr()AsLong)AsLong DimresAsLong,iAsLong res=arr(LBound(arr)) Fori=LBound(arr)+1ToUBound(arr) Ifarr(i)>resThenres=arr(i) Next Max=res EndFunction 去掉res变量,使用函数名称本身这个局部变量,可以使程序更加简练: FunctionMax(arr()AsLong)AsLong DimiAsLong Max=arr(LBound(arr)) Fori=LBound(arr)+1ToUBound(arr) Ifarr(i)>MaxThenMax=arr(i) Next EndFunction 火眼识破隐藏的Variant变量 如果没有用As语句声明变量,默认类型就是Variants,比如: Dimname’thisisavariant 或者,当前模块下没有声明OptionExplicit语句时,任何变量都是Variants类型。 许多开发者,特别是那些先前是C程序员的人,都会深信下面的语句将声明2个Interger类型变量: Dimx,yAsInteger 而实际上,x被声明为了variant类型。 由于variant类型变量要比Integer类型慢很多,所以要特别注意这种情况。 正确的一行声明方法是: DimxAsInteger,yAsInteger GoSub在编译程序中速度变慢 编译为本地代码的VB应用程序中,如果使用GoSubs命令,就会比通常的Subs或者Function调用慢5-6倍;相反,如果是p-code模式,就会相当快。 减少DoEvents语句的数量 不要在代码中放置不必要的DoEvents语句,尤其是在时间要求高的循环中。 遵循这个原则,至少能在循环中的每N次反复时才执行DoEvents语句,从而增强效率。 比如使用下面的语句: If(loopNdxMod10)=0ThenDoEvents 如果只是使用DoEvents来屏蔽鼠标以及键盘操作,那么就可以在事件队列中存在待处理项目时调用它。 通过API函数GetInputState来检查这个条件的发生: DeclareFunctionGetInputStateLib"user32"Alias"GetInputState"()AsLong ’... IfGetInputState()ThenDoEvents 为常量定义合适的类型 VB在内部使用最简单、最可能的数据类型保存符号数值,这意味着最通常的数字类型-比如0或者1-都按照Integer类型存储。 如果在浮点表达式中使用这些常量,可以通过常量的合适类型来加速程序运行,就象下面的代码: value#=value
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最为 常用 VB 代码 大全