Sub过程讲解
今天小编给各位分享option的知识,文中也会对其通过Sub过程讲解和请问关于vb中的过程和函数等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!
内容导航:
一、Sub过程讲解
今日的内容是“VBA之EXCEL应用”的第十三章“Function过程和Sub过程”。这讲是第2节“Sub过程”。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,案例众多。大家可以非常容易的掌握相关的知识,这套教程面向初学人员,共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。
第二节 Sub过程大家好,在上一节中我们讲解了Function过程,这个过程最为典型的特征是有返回值,在实际写代码的时候,我们往往在Sub过程中调用Function过程,调用的目的就是利用了这个过程的返回值。我们这节来给大家讲解一下Sub过程如何调用一个带参数的Sub过程,并比较一下和Function过程有什么不同。
1 Sub过程的语法和参数讲解语法:
[Private|Public|Friend][Static]Sub name[(arglist )]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub
各个参数的意义:1)Public可选。指示Sub过程对所有模块中的过程是可访问的。如果在使用了Option Private 语句,则此过程在项目外部不可用。
2)Private可选。指示Sub过程仅对声明此过程的模块中的过程是可访问的。
3)Friend可选。仅在类模块中使用。指示Sub过程在整个项目中是可见的,但对对象的实例的控制器不可见。
4)Static可选。 指示在调用之间保留Sub过程的局部变量。Static属性不会影响在Sub 外部声明的变量(即使在此过程中使用这些变量)。
5)name必需。Sub的名称;遵循标准的变量命名约定。
6)arglist可选。表示在调用Sub过程时传递给它的参数的变量列表。多个变量之间使用逗号分隔。
7)statements可选。任意一组可在 Sub 过程中执行的语句。
arglist 参数包含以下语法和部分:
[Optional][ByVal|ByRef][ParamArray] varname [ ( ) ][ As type ][ = defaultvalue ]
1)Optional 可选。一个指示参数是非必需的关键字。如果使用, 则arglist中的所有后续参数也必须是可选的, 并且使用optional关键字声明。如果使用了ParamArray,则不能将 Optional用于任何参数。
2)ByVal可选。指示按值传递参数。
3)ByRef可选。指示按引用传递参数。在Visual Basic中,ByRef 为默认值。
4)ParamArray可选。仅用作arglist中的最后一个参数,以指示final参数是可选的Variant元素数组。ParamArray关键字允许您提供任意数目的参数。ParamArray不能与ByVal、ByRef或Optional一起使用。
5)varname必需。表示参数的变量的名称;遵循标准变量命名约定。
6)type可选。传递给过程的参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(仅可变长度)、Object、Variant 或特定对象类型。如果参数不是 Optional,则还可以指定用户定义类型。
7)defaultvalue可选。任意常量或常量表达式。仅对Optional参数有效。 如果类型是一个 Object,则默认值只能为 Nothing。
2 对Sub过程的理解1) 如果未使用public、Private或Friend显式指定,则默认情况下Sub过程是公共的。
如果未使用Static,则不会在两个调用之间保留局部变量的值。
2) Friend关键字只能用于类模块。但是,项目的任何模块中的过程均可以访问Friend过程。 Friend过程既不会显示在其父类的类型库中,也不会成为稍后可绑定的Friend过程。
3) Sub过程可能是递归的;即,它们可调用自身来执行给定任务。但是,递归可能导致堆栈溢出。Static关键字通常不与递归Sub过程一起使用。
4) 所有可执行代码必须在过程中。不能在另一个Sub、Function或Property过程中定义 Sub 过程。
5) Exit Sub关键字可导致立即退出Sub过程。程序将继续执行调用Sub过程的语句后面的语句。任意数目的 Exit Sub语句可出现在Sub过程中的任意位置。
6) 与Function过程一样,Sub过程是一个单独的过程,可接受参数、执行一系列语句以及更改参数的值。但是,与可以返回值的 Function 过程不同的是,Sub 过程不能在表达式中使用。
7) 在Sub过程中使用的变量可分为两类:在过程中显式声明的变量和未显式声明的变量。 在过程中显式声明的变量(使用 Dim 或等同项)始终是过程内的局部变量。在过程中使用但未显式声明的变量依然是局部变量,除非在过程外某些更高级别显式声明这些变量。
8) 过程可使用未在过程中显式声明的变量,但如果您在模块级别定义了使用相同名称的变量,则会发生命名冲突。为了避免此类冲突,请显式声明变量。可以使用Option Explicit语句强制显式声明变量。
不能使用 GoSub、GoTo 或 Return 进入或退出 Sub 过程3 Sub过程的应用实例我们来看下面的代码,注意和之前的Function过程比较:
Sub Brea(x As Double, y As Double)
MsgBox x * y
End Sub
Sub mynzA()
Brea 3, 5
End Sub
代码截图:
代码讲解:
上面的代码调用了一个带参数的Sub过程,同时要传递给这个过程必要的参数。由于Sub过程没有返回值,所以我们必须在Brea过程中提示给用户返回的值。有时这种用法会引起混乱,建议大家在使用的过程中尽可能应用Function过程。
下面我们看代码的执行过程:
今日内容回向:
1) Sub过程的意义是什么?
2) Sub过程和Function过程最大的区别是什么?
本讲内容参考程序文件:工作簿13.xlsm
分享成果,随喜正能量
VBA的应用及学习方法:VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!
我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了七部VBA专门教程。
第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。
第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。
第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。
第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,视频更易接受。
第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。
第六套教程:VBA信息获取与处理,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。
第七套教程:VBA之EXCEL应用 这是一部初级教程这部教程共三册,从从创建宏、对话框、工作簿和工作表对象、单元格对象等基础内容讲起,到循环结构、错误处理、字符串操作、日期和时间、事件、数组应用,函数过程等方面,一直讲解到控件和窗体对象的应用都是我们提高自己EXCEL水平的必须。
以上各教程学习顺序:7→1(或者4)→3→2→6→5。其中第四套是对第一套的视频讲解,所以第一和第四只选其一即可。
一、请问关于vb中的过程和函数
自定义函数有两种sub过程和functiong过程对于sub过程如”]
sub aaaa(xx as integer)
内容
end sub
你可以用两种方法调用aaaa过程
1.aaaa ss
2. call aaaa(ss)
对于function过程
function yyy(aa as string)
内容
end function
调用方法
sss=sss+yyy(ddd)
二、按键精灵怎么使用
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com作者:舞月
我们应该知道,按键精灵拥有一只眼睛,一双手,眼睛可以帮我们查看屏幕上的颜色,而手可以帮我们不断的点击键盘鼠标相信多数的朋友对于这双手的操控已经灵活自如了,而要编写出功能强大的脚本,没有眼睛可不行本教程以此出发,教会读者使用这双眼睛,更好的控制机器人的手臂
本章用到的按键精灵基础命令:
1、
IfColor 100 10 112233 0
EndIf
IfColor做为按键精灵最重要的颜色判断语句(眼睛),有着良好的易用性与理解性
语句详细解释:
ifColor - 如果颜色
100 - 屏幕X象素
10 - 屏幕Y象素
112233 - 16位进制的颜色(以两位为一种颜色分别代表蓝、红、黄)
0 - 相等(1为不相等2为模糊匹配)
解释:如果在坐标100,10的颜色为112233则执行后面的EndIf做为IfColor的配对
使用方法:控制命令->抓点坐标/颜色->在面图上点左键,加入到坐标点->退出抓点->选好坐标颜色后->插入
2、
//注释
解释:“//”为按键精灵的注释在“//”后面所跟写的任何文字都将被按键忽略
3、
Rem s
Goto s
解释:“Rem s”可以理解为在改位置做一个标记s而“Goto s”则是无条件跳到此标记执行这里补一下程序运行概念:每行代码都有行号,脚本解释器要一行一行代码的执行下去,知道执行最后一行代码或碰到EndScript语句(该语句在后面会有讲解),没有任何可执行了,程序就退出
4、
Delay 100
解释:暂停100毫秒(1000毫秒 等于 1秒)
看完了概念,我们来实际编写一个游戏的补红补蓝脚本,验证我们是否已经学会了该课的内容
首先打开按键精灵,并进入游戏,用PrintScr(一般在F12右边第一个)键截取游戏图象然后切换到按键精灵程序按ifcolor的使用方法来抓取我们的血条颜色坐标并且插入到代码内
此时,我们可以看到在按键精灵里多出了三条语句(在源代码那边哦):
IfColor 126 19 4a5110 0
Else
EndIf
其中else是否则的意思,就是说如果上面的ifcolor不成立,则执行else下面的语句我们先写个测试代码,看看取得的颜色是否正确
IfColor 126 19 4a5110 0
MessageBox 颜色正确
Else
MessageBox 颜色不对
EndIf
如果只弹出“颜色正确”那么恭喜你,您离成功很近了如果颜色不对,请检查是不是颜色那里出现错误直到弹出“颜色正确”就可以继续学习了
我们继续
修改代码如下:
Rem s
IfColor 126 19 4a5110 1
//使用F5的红药
KeyPress 116 1
EndIf
Delay 100
Goto s
注意以上代码增加了rem..goto,持续不断的执行上面的过程原来的ifcolor最后的0改为了1(1为不等于)加了暂停的Delay(不让脚本的CPU占用率过高)这时,你的这段代码已经可以补红了补蓝的代码请自行加入,做为作业
好了,这节已经结束大家多注意休息,不要劳神哦~ 什么?代码不好使?颜色不对好好,我加个补充说明
补充说明:
如果按步骤写了以上代码并不好使,那么可能是颜色出现问题解决方法给出几个供参考
1、取血条底色,如果颜色等于底色则执行加血的操作
2、用模糊取色,如果颜色大约等于血色则,否则加血或,如果颜色大约等于底色则加血(这里是模糊匹配和else的运用)
以上两点也为各游戏常遇到问题的解决办法多多实验,总会成功的
最后说一点,按键精灵是不区分大小写的可以随便写~~~
过程语句的学习
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
接第2课,零编程学会补红蓝脚本的制作
本节想学会使用Sub和GoSub语句的使用,以及对第2节没有解释清楚的地方加以补充
Sub作为一个过程语句的关键子,在代码重用和逻辑编排上启着致关重要的作用先看一下关键字的说明:
Sub [过程名]
//这里的部分就是过程体(自命名,可以看的懂就好)了可以添加执行代码
Return
解释:[过程名]可以随意更改,启一个可以很容易理解的名字是书写代码的良好习惯,也可以使用中文Return 语句的作用是返回调用点
GoSub [过程名]
解释:gosub固名思意,到subsub可以理解为过程、函数、方法叫法不同,原理一样
我们改装上次讲过的补红蓝脚本:
Sub main
Rem s
Gosub add_hp
Gosub add_mp
Delay 100
Goto s
Return
Sub add_hp
IfColor 126 19 4a5110 1
KeyPress 116 1
EndIf
Return
Sub add_mp
IfColor 126 19 4a5110 1
KeyPress 117 1
EndIf
Return
以上代码组成一个完整的体系,并且结构合理,清晰易于看懂通常会把执行单一功能的一块代码做为一个sub比如补红蓝脚本,一个主控sub,一个补红,一个补蓝要修改哪部分,只要在对应的sub中修改即可
sub main只是一种编程习惯,在按键精灵里,如果没有碰到goto、gosub这两个语句(另外还有几个会发生跳转,以后章节就讲到)是不会发生跳转代码行号的,只是顺序执行,在碰到sub时,直接忽略该行语句,执行下一条
我们来看下面代码:
Sub main
Gosub test
Return
MessageBox 测试
Sub test
MessageBox 测试
Return
该代码在按键精灵5.2以前的版本中(包括5.2)都会执行不正常5.2版的执行结果为一直弹出“测试”提示框,而不是只弹出一次这个错误在5.3版以及后续版本,都已经改正,所以在学习当中,尽量使用最新版本的按键精灵,以后的教程也都根据按键精灵最新的5.6版来讲解
代码含义补充说明:
KeyPress 116 1
解释:
KeyPress - 按某一个键的关键字(在键盘选项卡里可以找到)
116 - F5键的虚拟键值码(在键盘选项卡里最下面左边的文本框可以按下键盘各种键,查询虚拟键值码也可反之)
1 - 按1次(改成2就是按两下)
以上说明适合keydown(按键按下)、keyup(按键抬起)、leftclick(鼠标左键点击)等
很多初学者都会迷惑,什么是变量
个人觉得变量是编程入门的一道门槛介绍变量概念的文章很多,这里先做易于理解的比喻,再从语言层面上进行讲解如果你已经了解了变量的含义,则请跳过此节
变量,你可以理解为超市的存包柜每一个变量对应一个柜子而柜子的号码就是变量名想要哪个柜子里的东西(数据),就对应的找哪个变量名变量名可是你自己命名的哦~
我们看例子:
a=1
把数字1放进柜子a中
b="你猜对了吗?"
把字符串 你猜对了吗? 放进柜子b中字符串必须用""包含
dc=3.14159265
把小数放进柜子dc中
num1=1
num1=33
num2=55
sum=num1+num2
首先把33和55分别放入num1和num2中然后把他们取出来,做加法操作(加法是由CPU来处理的),把结果放在sum中结果sum等于88
num1=1
num1=33
num1被给值为1,然后又给值为33此时,num1中存储是的331就被覆盖掉了没有了:)
sum=sum+1
这句不等同于数学的加法,也是初学者不容易理解的地方我们只要想,把sum拿出来和1做加法,再放回sum中就可以了sum原来的值是88,做完加法后,sum等于89
pig=1
pig=pig*3+pig
能猜出pig最后等于几么?1*3+1结果是4
好,相信到这里,你应该明白变量是怎么回事了变量的加减法已经会发,乘除法作为作业喽更高级的应用,将来以后的章节进行讲解下面大致说一下C语言中的变量
C语言比较接近于系统底层,更易于理解变量的机制当代码中有a=2的时候,则在内存中分配一小块区域来存储这个变量,然后把2放在该内存的区域中当执行b=a的时候,则通过变量名a提取出它的值数字2在放在b在内存中的区域中!
当然,在语言实现层面也并非我上面说的寥寥几句,但这都并不是我们关心的我们只要明白,变量、变量名是什么,以及怎么给他赋值,怎么提出他的值就可以了,毕竟我们要的只是应用如果有兴趣知道更多,使用搜索引擎就可以得到你想要的答案了
条件语句的使用
本教程欢迎转载,但请注明:转载自简单游官方论坛:bbs.jdyou.com
作者:舞月
所谓条件语句,即“满足”或“不满足”,也可以理解为“是”或“否”比如在上几节说过的ifcolor,既属于此类
按键精灵中,条件语句只有两个:ifcolor..else..endif和if..else..endif
ifcolor语句不再讲解,这节把重点放if上也为巩固上一节中变量的知识
if语句的格式:
If [条件表达式]
//这里可以写功能代码
Else
//这里可以写功能代码
EndIf
解释:
if后面跟一个空格键,然后写条件表达式这里是很明显的“是”与“非”划分
所谓“条件表达式”,既条件的结果只有两个值:“真/假”如:1=1(真) 1=2(假) 1>2(假) 13
MessageBox 不成立
Else
MessageBox 成立
EndIf
把上面代码放在按键精灵中执行,可以直观的看到结果,然后在把“>”换成“
爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。