PrivateSubcmdFind剖析Word文件下载.docx

上传人:b****3 文档编号:17874053 上传时间:2022-12-11 格式:DOCX 页数:8 大小:19.67KB
下载 相关 举报
PrivateSubcmdFind剖析Word文件下载.docx_第1页
第1页 / 共8页
PrivateSubcmdFind剖析Word文件下载.docx_第2页
第2页 / 共8页
PrivateSubcmdFind剖析Word文件下载.docx_第3页
第3页 / 共8页
PrivateSubcmdFind剖析Word文件下载.docx_第4页
第4页 / 共8页
PrivateSubcmdFind剖析Word文件下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

PrivateSubcmdFind剖析Word文件下载.docx

《PrivateSubcmdFind剖析Word文件下载.docx》由会员分享,可在线阅读,更多相关《PrivateSubcmdFind剖析Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。

PrivateSubcmdFind剖析Word文件下载.docx

arglist参数包含下列语法和部分:

[ByVal|ByVal]varname[()] 

ByVal表示该参数按值传递。

ByRef表示该参数按引用传递。

Varname代表参数的变量名称,遵循标准变量命名约定。

说明 

如没有显式地指定使用Public或Private,则Sub过程默认为公用,即它们对于Script中的所有其他过程都是可见的。

Sub过程中局部变量的值在调用过程中不被保留。

所有可执行代码必须包含于过程中。

不能在另一个Sub或Function过程中定义一个Sub过程。

使用ExitSub语句可以立即从Sub过程中退出。

程序继续执行调用Sub过程的语句之后的语句。

可以在Sub过程中任意位置出现任意个ExitSub语句。

与Function过程相似之处是:

Sub过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。

而与Function过程不同之处是:

Function过程可以返回值,而Sub过程不能用于表达式中。

可以使用过程名并跟随相应的参数列表来调用Sub过程。

关于如何调用Sub过程的详细说明信息,请参阅Call语句。

小心Sub过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。

但是递归可能会导致堆栈溢出。

在Sub过程中使用的变量分为两类:

一类是在过程内显式声明的,另一类则不是。

在过程内显式声明的变量(使用Dim或等效方法)总是局部变量。

对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。

小心过程可以使用没有在过程内显式声明的变量,但只要有任何script级定义的名称与之同名,就会产生名称冲突。

如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是Script级的名称。

显式声明变量可以避免这类冲突,使用OptionExplicit语句可强制显式声明变量。

VisualBasic语言概念 

Sub过程 

Sub过程是包含在Sub语句和EndSub语句中的一系列VisualBasic语句。

每次调用过程时都执行过程中的语句,从Sub语句后的第一个可执行语句开始,到遇到的第一个EndSub、ExitSub或Return语句结束。

Sub过程执行操作但并不返回值。

它能够带参数,如呼叫代码传递给它的常数、变量或表达式。

声明Sub过程的语法如下所示:

[accessibility]Subsubname[(argumentlist)] 

'

StatementsoftheSubproceduregohere. 

可访问性可以是Public、Protected、Friend、ProtectedFriend或Private。

可以在模块、类和结构中定义Sub过程。

默认情况下它们是Public,这意味着可以从应用程序中的任意位置调用它们。

参数声明 

声明过程的每个参数与声明变量的方法一样,都是指定参数名和数据类型。

也可以指定传递机制,以及参数是否可选。

参数列表中每个参数的语法如下所示:

[Optional][ByVal|ByRef][ParamArray]argumentnameAsdatatype 

如果参数是可选的,则还必须在其声明中提供默认值,如下所示:

Optional[ByVal|ByRef]argumentnameAsdatatype=defaultvalue 

调用语法 

可以使用独立的调用语句来显式调用Sub过程。

不能在表达式中使用其名称来调用它。

调用语句必须提供所有非可选参数的值,并且必须用括号将参数列表括起来。

如果未提供任何参数,则也可以选择省略括号。

Call关键字的使用也是可选的。

调用Sub过程的语法如下所示:

[Call]subname[(argumentlist)] 

下面的Sub过程通知计算机操作员应用程序将要执行哪个任务,并且还显示一个时间戳。

应用程序不是在每个任务的开头重复此代码,而仅是从不同的位置调用TellOperator。

每次调用都会传递Task参数中的字符串以标识开始执行的任务。

SubTellOperator(ByValTaskAsString) 

DimStampAsDate'

StampislocaltoTellOperator. 

Stamp=TimeOfDay()'

Getcurrenttimefortimestamp. 

UseMessageBoxclassofSystem.Windows.Formsnamespace. 

MessageBox.Show("

Starting"

&

Task&

"

at"

CStr(Stamp)) 

典型的TellOperator调用如下所示:

CallTellOperator("

fileupdate"

) 

请参见 

过程|事件处理过程|Function过程|Property过程|过程参数|Sub语句

为了避免难以弄清的复杂的嵌套的If语句,你可以使用SelectCase语句代替。

它的语法为:

SelectCase测试表达式

Case表达式1

如果表达式1匹配测试表达式的语句

Case表达式2

如果表达式2匹配测试表达式的语句

Case表达式N

如果表达式N匹配测试表达式的语句

CaseElse

如果没有表达式匹配测试表达式要执行的语句

EndSelect

你在关键字SelectCase和EndSelect之间放置任意多个条件以测试。

子句CaseElse是可选的,当你希望可能有条件表达式返回假时使用它。

在SelectCase语句里,VB将每个表达式和测试表达式相比较。

这里是SelectCase语句背后的逻辑。

当VB遇到SelectCase子句,它记下测试表达式的值。

然后它前进到下面的第一个Case子句,如果这个表达式的值和测试表达式的值匹配的话,VB就会执行语句直到遇到另外一个Case子句并且跳到EndSelect语句。

然而,如果第一个Case子句后面的表达式测试结果和测试表达式不匹配时,VB就会检查每一个Case子句,直到它找到一个匹配的为止。

如果没有一个Case子句后面的表达式匹配测试表达式的值的话,VB就会跳到CaseElse子句并执行该语句直到遇到关键字EndSelect。

注意,CaseElse子句是可选的,如果你的程序里面没有使用CaseElse并且没有一个Case子句的表达式和测试表达式相匹配,VB就会跳到EndSelect后面的语句,并且继续执行你的程序。

我们来一个使用SelectCase语句的程序例子。

在第四章里,你学习了MsgBox函数允许你显示带有一个或多个按钮的信息,你也学习了MsgBox函数的结果可以赋予一个变量。

使用SelectCase语句,你现在可以基于用户按下的按钮决定采取哪个行动。

1. 

在当前工程里插入一新模块

2. 

重命名新模块SelectCase.

3. 

输入下述过程TestButtons:

SubTestButtons()

DimquestionAsString

DimbtsAsInteger

DimmyTitleAsString

DimmyButtonAsInteger

question="

Doyouwanttoopenanewworkbook?

"

bts=vbYesNoCancel+vbQuestion+vbDefaultButton1

myTitle="

NewWorkbook"

myButton=MsgBox(prompt:

=question,buttons:

=bts,_title:

=myTitle)

SelectCasemyButton

Case6

Workbooks.Add

Case7

MsgBox"

Youcanopenanewbookmanuallylater."

YoupressedCancel."

EndSub

过程TestButtons的第一部分显示一个带有三个按钮的信息框:

是,否和取消。

用户选择按钮的值赋予变量myButton。

如果用户点击“是”,那么变量myButton就会被赋值常量vbYes或它对应的值6;

如果用户点击“否”,那么变量myButton则赋值为常量vbNo或它对应的值7;

最后,如果点击了“取消”,变量myButton的内容就等于vbCancel或2。

SelectCase语句对照储存在变量myButton里的值检查Case子句提供的值。

当有匹配时,就会执行适当的Case语句。

如果你使用常量,而不是按钮值,过程TestButtons同样会运行一致。

CasevbYes

CasevbNo

你可以忽略Else子句,可以按下述方法修改一下SelectCase语句:

CasevbCancel

*********************************************************************************

8.和Case子句一起使用Is

有时候,作决定是基于测试表达式的条件,例如它是否大于,小于,等于或使用一些其它的关系运算符(参见表5-1)。

关键字Is使你能够在Case子句里使用条件表达式。

使用关键字Is的SelectCase语句的语法如下:

CaseIs条件1

如果条件1为真时执行的语句

CaseIs条件2

如果条件2为真时执行的语句

CaseIs条件N

如果条件N为真时执行的语句

EndSelect

例如,我们来比较几个数字:

SelectCasemyNumber

CaseIs<

10

Thenumberislessthan10"

Case11

Youenteredeleven."

CaseIs>

=100

Thenumberisgreaterthanorequalto100."

Thenumberisbetween12and99."

假设变量myNumber为120,那么第三个Case子句为真,并且只有CaseIs>

=100和CaseElse之间的语句会被执行。

9.确定Case子句里数值的范围

在前面的例子里,你看到了在每个Case子句里使用一个简单表达式。

然而,很多时候,你可能需要在Case子句里确定一个数值范围。

可以通过关键字To用于表达式的数值之间来实现它,如下所示:

SelectCaseunitsSold

Case1to100

Discount=0.05

=500

Discount=0.1

Case501to1000

Discount=0.15

1000

Discount=0.2

我们来分析一下上面的SelectCase代码块,假设变量unitsSold当前值为99。

VB将变量unitsSold的值与Case子句的条件表达式进行比较。

第一和第三条Case子句示范如何通过使用关键字To在条件表达式里使用数值范围。

因为unitsSold=99,第一个Case子句里的条件表达式为真,因此,VB将0.05赋给变量Discount。

第二个Case子句如何呢?

它也为真。

尽管,很明显99小于等于500,VB不会执行相关的语句Discount=0.1。

原因是,一旦VB找到了一个真条件的Case子句,它就不会去管其它的Case子句,它将跳过那些代码,继续执行EndSelect语句后面可能有的语句。

我们来练练使用SelectCase语句,在函数过程里使用它。

回想在第四章里,函数过程允许你将结果返回给一个子过程。

假设该子过程必须根据销售的套数来显示一个折扣,你可以从用户那里获得销售套数,然后允许一个函数来确定需要的折扣:

在模块SelectCase里输入下列子过程:

SubDisplayDiscount()

DimunitsSoldAsInteger

DimmyDiscountAsSingle

unitsSold=InputBox("

Enterthenumberofsoldunits:

myDiscount=GetDiscount(unitsSold)

MsgBoxmyDiscount

输入下列函数过程:

FunctionGetDiscount(unitsSoldAsInteger)

Case1To200

GetDiscount=0.05

=500

GetDiscount=0.1

Case501To1000

GetDiscount=0.15

GetDiscount=0.2

EndFunction

将光标放在过程DisplayDiscount的任意地方并且按下F5来运行它。

过程DisplayDiscount将储存于变量unitsSold的值传递给函数GetDiscount。

当VB遇到SelectCase语句时,它检查第一个Case子句里的值是否合储存于unitsSold里面的值是否匹配。

如果匹配,VB给函数名称赋值百分之五(0.05),并且跳到关键字EndSelect。

因为,在函数过程里面没有更多需要运行的语句,VB就返回主调过程——DisplayDiscount,在这里,它将函数的结果赋予变量myDiscount。

最后的语句用信息框来显示获得的折扣。

10.在Case子句里确定多个表达式

你可以使用逗号明确单一Case子句里的多个表达式:

SelectCasemyMonth

Case"

January"

"

February"

March"

Debug.PrintmyMonth&

:

1stQtr."

April"

May"

June"

2ndQtr."

July"

August"

September"

3rdQtr."

October"

November"

December"

4thQtr."

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1