金字塔决策交易系统—高级教程(2016修订版)(6)

2019-03-28 15:50

金字塔决策交易系统高级教程

A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55

与此类似,使用索引可以检索到所需的数组元素的数据。例如: . . .

SomeVariable = A(8) . . .

数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:

Dim MyTable(5, 10)

在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。

也可以声明动态数组,即在运行 Script 时大小发生变化的数组。对数组的最初声明使用 Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。例如:

Dim MyArray() ReDim AnotherArray()

要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。在下例中,ReDim 将动态数组的初始大小设置为 25,而后面的 ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的内容。

ReDim MyArray(25) . . .

ReDim Preserve MyArray(30)

重新调整动态数组大小的次数是没有任何限制的,但是应注意:将数组的大小调小时,将会丢失被删除元素的数据。

(8)字符串

字符串是VBA 中需要经常处理的一种数据类型,有2 种字符串类型:变长字符串和定长字符串。变长字符串理论上可以保存大约2G(231)字节的字符串,实际中其保存的字符串长度由内存大小决定;而定长字符串可以保存大约65000(216)长度的字符串。

字符串定义后为空字符串,即没有任何数据的字符串(“”),可以通过以下方式对字符串赋值。字符串在VBA 中用双引号表示。

MyString = \

22

金字塔决策交易系统高级教程

MyFixedString = \MyEmptyString = \

字符串的连接可以使用“&”或者“+”,不过不推荐使用后者,因为容易和数字运算混淆。例如可以使用以下语句连接字符串。

MyString = “test”

MyString = MyString &“ Test Added” MyString = MyString + “ Added Still”

(9)日期和时间

日期和时间数据类型中,日期的范围是100-1-1 到9999-12-31,每天的时间范围是0:00:00 到23:59:59。Date 数据类型可以同时保存日期和时间,也可以只在其中保存时间或者日期。相对于字符串等方式保存日期和时间,应用Date 数据类型,可以在变量之间进行日期运算。

给Date 数据类型赋值时需要在时间和日期外使用“#”符号包括起来,VBA 基本上可以识别常见的各种时间格式,但为防止引入错误,最好还是使用本机的时间和日期格式。当给一个Date 类型的变量赋以一个不可识别的时间格式的时间或日期,会引发一个错误。下面是一些使用Date 数据类型的例子:

MyDate = #15 July 1999# StartDate = #April 8, 2001# MyTime = #8:47 PM#

StartingDateTime = #05/07/1992 15:56#

3.3.4VBA 语言基础

本部分将介绍在进行VBA 程序设计时,需要熟悉的VBA 语法,包括流程控制语句,最简单的用户交互,一些常用的函数,字符串操作等VBA 语言的基础内容。

(1)处理简单的用户输入输出

在程序设计时,经常需要进行用户交互,例如显示一条信息反馈给用户,需要用户输入一些信息等。VBA 中,最简单的用户输入输出方法是使用MsgBox 函数和InputBox 函数。我们在前面已经使用过这两个函数,下面我们将系统的学习一下这两个函数的使用方法。

MsgBox 函数可以在用户屏幕显示一个对话框,等待用户点击,最后返回一个值,代表用户点击的按钮。MsgBox 的语法如下:

MsgBox(prompt[, buttons][, title][, helpfile, context])

其中prompt 代表其显示的消息,之后的参数可以全部省略;buttons 表示对话框显示的按钮和图标,title 表示其标题。例如以下代码片断: Dim iReturn

23

金字塔决策交易系统高级教程

iReturn = MsgBox(\测试\标题\If iReturn = vbYes Then

MsgBox \Else

MsgBox \End If

第2行显示一个有询问图标,有Yes 和No 按钮(是和否)的对话框,单击后根据返回值判断,告诉你点击了那个按钮。

(2)控制程序流程

VBA 程序代码的流程同其他程序设计语言一样,有顺序语句:从上到下,由程序的第一行执行到最后一行;判断分支语句:根据条件跳过部分语句,执行另一部分;循环语句:循环执行一段语句。

(3)使用 If...Then...Else 进行判断

If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句。通常,条件是使用比较运算符对值或变量进行比较的表达式。有关比较运算符的详细信息,请参阅比较运算符。If...Then...Else 语句可以按照需要进行嵌套。

(4)条件为 True 时运行语句

要在条件为 True 时运行单行语句,可使用 If...Then...Else 语句的单行语法。下例示范了单行语法。请注意此例省略了关键字 Else。

Sub FixDate() Dim myDate myDate = #2/13/95#

If myDate < Now Then myDate = Now End Sub

要运行多行代码,必须使用多行(或块)语法。多行(或块)语法包含 End If 语句,如下所示: Sub AlertUser(value) If value = 0 Then

AlertLabel.ForeColor = vbRed AlertLabel.Bold = True AlertLabel.Italic = True End If End Sub

(5)条件为 True 和 False 时分别运行某些语句

可以使用 If...Then...Else 语句定义两个可执行语句块:条件为 True 时运行某一语句块,条件为 False 时运行另一语句块。

24

金字塔决策交易系统高级教程

Sub AlertUser(value) If value = 0 Then

AlertLabel.ForeColor = vbRed AlertLabel.Bold = True AlertLabel.Italic = True Else

AlertLabel.Forecolor = vbBlack AlertLabel.Bold = False AlertLabel.Italic = False End If End Sub

(6)对多个条件进行判断

If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加 ElseIf 子句以扩充 If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。例如:

Sub ReportValue(value) If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 then Msgbox value Else

Msgbox \数值超出范围!\ End If

可以添加任意多个 ElseIf 子句以提供多种选择。使用多个 ElseIf 子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。 (7)使用 Select Case 进行判断

Select Case 结构提供了 If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与 If...Then...Else 语句类似,但是可以使代码更加简练易读。

Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较。如果匹配,则执行与该 Case 关联的语句块: Select Case Form1.Caption Case \ DisplayMCLogo

25

金字塔决策交易系统高级教程

ValidateMCAccount Case \

DisplayVisaLogo ValidateVisaAccount Case \ DisplayAMEXCOLogo ValidateAMEXCOAccount Case Else

DisplayUnknownImage PromptAgain End Select

请注意 Select Case 结构只计算开始处的一个表达式(只计算一次),而 If...Then...ElseIf 结构计算每个 ElseIf 语句的表达式,这些表达式可以各不相同。仅当每个 ElseIf 语句计算的表达式都相同时,才可以使用 Select Case 结构代替 If...Then...ElseIf 结构。 (8)循环语句

如果需要反复执行某一句或者某一段语句,则可以使用VBA 的循环语句。循环允许重复执行一组语句。某些循环重复执行语句直到条件为False(Do...Loop While);某些循环重复执行语句直到条件为True(Do...Loop While);某些循环执行一指定次数的语句(For…Next) (9)使用 Do 循环

可以使用 Do...Loop 语句多次(次数不定)运行语句块。当条件为 True 时或条件变为 True 之前,重复执行语句块。

(10)当条件为 True 时重复执行语句

While 关键字用于检查 Do...Loop 语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的 ChkFirstWhile 示例);或者在循环至少运行完一次之后检查条件(如下面的 ChkLastWhile 示例)。在 ChkFirstWhile 过程中,如果 myNum 的初始值被设置为 9 而不是 20,则永远不会执行循环体中的语句。在 ChkLastWhile 过程中,循环体中的语句只会执行一次,因为条件在检查时已经为 False。 Sub ChkFirstWhile() Dim counter, myNum counter = 0 myNum = 20

Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop

26


金字塔决策交易系统—高级教程(2016修订版)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:主题教育活动简报第1期(总第89期)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: