级别: 中级 Ed Ward, 软件工程师, IBM
2009 年 7 月 22 日 这份白皮书帮助用户解决将第三方财务应用程序(比如 Microsoft® Excel)迁移到 IBM® Lotus® SymphonyTM Spreadsheets 的一些关键领域。这份白皮书是受 IBM 财务部门的请求而撰写的,它的目的是帮助用户快速迁移到 Lotus Symphony Spreadsheets 并熟练掌握它。
简介
Lotus Symphony Spreadsheets 是一个电子表格应用程序,可用于计算、分析和管理数据,也可用于导入和修改 Microsoft® Excel 电子表格。Symphony Spreadsheets 还提供统计和银行函数,您可以使用它们创建公式执行复杂的数据计算:
-
What-If 计算。如果一个计算包含几个因数,当其中的一个因数发生变化时,这个有趣的特性使您可以马上看到结果。例如,您可以看到贷款计算中时间周期的变化对利率或偿还额的影响。另外,通过使用不同的预定义场景,您可以管理更大的表格。
-
排列数据。仅需几次鼠标点击,就可以重新组织电子表格,以显示或隐藏某些数据排列、根据特定条件格式化排列,或快速计算小计或合计。
-
动态图表。Symphony Spreadsheets 可以使用动态图表显示电子表格数据,当数据改变时,图表将自动更新。
-
打开和保存 Microsoft 文件。您可以使用 Symphony Spreadsheets 过滤器转换 Excel 文件,或以其他格式保存文件。
使用公式计算
所有公式都以等于号开始。公式可以包含数字或文本,以及其他数据,比如格式细节。公式还可以包含算术运算符、逻辑运算符或函数。
技巧:可以根据“先乘除后加减”的规则在公式中使用基本算术符号(+、-、* 和 /)。与其将公式写成 =SUM(A1:B1),不如将其写成 =A1+B1。还可以使用圆括号。
公式 =(1 +2)*3 得出的结果与 =1+2*3 得出的结果不一样。还可以在公式或函数中嵌套函数。Function Instant Pilot 帮助您使用嵌套函数。
DataPilot 特性概述
很多电子表格用户都熟悉数据可视化程序中的数据归纳工具 PivotTable。Lotus Symphony Spreadsheets 提供一个功能有限的类似函数 DataPilot,您可以使用它合并、比较和分析大型数据。
您可以查看数据源的不同摘要,并且可以显示感兴趣部分的细节和创建报告。使用 DataPilot 创建的表格是交互性的;可以根据不同的需求对数据进行排列、重组或归纳。
例如,假设您的数据分析表格包含公司的销售数据,这些数据不仅包含特定的产品组,而且还涵盖各个分公司和年份(见图 1)。使用 DataPilot 可以快速找到相关的数据,并且可以过滤数据。
图 1. 示例 DataPilot 表格
可以使用 DataPilot 的 Area、Page、Column、Row 和 Data 在电子表格中过滤和显示数据(见图 2)。
图 2. 过滤数据
使用 DataPilot 组织数据
DataPilot 表格为大型数据提供摘要。您可以通过选择 Manipulate > DataPilot 重新排列 DataPilot 表格,以查看针对某项数据的不同摘要。DataPilot 菜单提供了一些选项,如表 1 所示。您可以根据需要使用它们。
表 1. 操作菜单选项
|
选项
|
说明
| |
Create
|
打开一个窗口,通过它为 DataPilot 表格选择数据源,然后创建表格。
| |
Filter
|
打开 Filter 窗口。
|
DataPilot
Table options
|
- 忽略空行:忽略数据源中的空字段。
- 标识类别:使用来自上一行的值自动为空行赋值。
- 总列数:计算并显示总列数。
- 总行数:计算并显示总行数。
| |
Refresh
|
刷新 DataPilot 表格。当导入包含 DataPilot 表格的电子表格时,这个选项尤为有用。
|
Delete
DataPilot
Table
|
删除选中的 DataPilot 表格。
|
Show
DataPilot
Panel
|
显示 DataPilot 窗口。
|
创建 DataPilot 表格
要创建 DataPilot 表格,您必须选择数据源并输入表格的位置:
A. 首先,创建一个空的 DataPilot 表格:
- 将指针停放在包含值、行标题和列标题的一组单元格中。
- 选择 Manipulate > DataPilot > Create;这将打开 Create DataPilot Table 窗口。
B. 通过以下步骤之一选择数据源:
-
单击Range 字段旁边的 Shrink 按钮临时隐藏窗口,这便于选择单元格范围。在表格中选择一定范围的单元格之后单击 Maximize 按钮。选中的单元格就是数据源。
注意:如果您在启动 Create DataPilot Table 窗口之前在一组单元格中选择一个单元格,所选单元格周围的单元格就是数据源。
- 将指针停放在 Range 字段上。在 Range 字段中直接输入内容定义数据源。
- 单击 OK。然后将显示一个空白的 DataPilot 表格。您可以移动窗口到任意位置,并调整其大小。此外,DataPilot 窗口停靠在屏幕的左右边沿(不是上下边沿)时可以隐藏起来。当触点碰到或离开 DataPilot 表格时,它就会自动显示或隐藏。
- 窗口关闭之后,可以通过以下操作之一打开它:
-
右键单击 DataPilot 表格并选择 Show DataPilot Table,或
-
选择 Manipulate > DataPilot > Show DataPilot Table。
- 添加字段。来自数据源的所有字段都列出在 Field 字段中。字段的名称就是每个列的第一个单元格的内容。
- 将字段拖放到 Page、Column、Row 或 Data 区域,这样它就被加入到该区域。
- 在 Page、Column、Row 或 Data 区域之间拖动字段,将其放入某个区域中。
- 在某个区域中拖动字段,以改变该区域的字段的顺序。
- 将某个区域的字段拖放到 Field,以将这个字段从该区域删除。
- 当将某个字段拖放到 Data 区域时,如果数据源类型是数字,那么字段选项默认设置为使用 Sum 函数。如果数据源类型是文本或日期等,那么字段选项默认设置为使用 Count 函数。
- 右键单击字段名然后选择适当的选项:Add to Page、Add to Column、Add to Rows 或 Add to Data,从而将该字段放到特定区域。
- 重新排列字段。如果要重新排列字段,则单击某个区域中的字段名,然后选择表2 给出的选项之一。
表 2. 重新排列字段选项
|
选项
|
说明
| |
Move up
|
在该区域中将字段向上移动一个位置。
| |
Move down
|
在该区域中将字段向下移动一个位置。
| |
Move to Column
|
将字段移动到列区域。
| |
Move to Row
|
将字段移动到行区域。
| |
Move to Data by
|
将字段移动到数据区域,并选择适当的公式计算数据。
| |
Field Option
|
-
为页面、列或行区域显示 Field Option 窗口。
-
为数据区域显示 Data Field Option 窗口。
|
自动应用更改。
- 默认情况下,更改被自动地应用到 DataPilot 表格。
- 您也可以在面板的底部取消选择 Automatically Update 复选框。然后可以通过
单击 Update 手动应用更改。
可选:通过以下操作之一从某个区域中删除字段:
- 单击字段按钮或右键单击字段,并选择 Remove from Areas。
- 从该区域将字段拖放到字段列表。
为数据区域设置数据字段选项
通过设置数据字段选项,您可以为数据字段选择希望使用的函数或计算类型:
- 创建一个 DataPilot 表格。
- 在数据区域中单击字段名按钮或右键单击字段名,然后选择 Field Option。这将显示 Data Field Option 窗口。
- 单击窗口上的选项卡之一,并选择适合的选项(见表 3);单击 OK。
表 3. 数据字段选项
|
选项
|
说明
| |
Function
|
选择应用于数据字段的函数。
| |
Display
Value
|
Display the data value as:选择您希望在数据区域的基础项中使用的计算类型。
Base field:选择其值作为计算的基础的字段。
Base item:从作为计算基础的基础字段选择一个值。
|
为页面、列或行区域设置字段选项
针对 Page、Column 和 Row 的 Field Option。您可以通过设置字段选项计算小计并对值进行排序。窗口标题显示当前的字段名:
1. 创建一个 DataPilot 表格。
2. 在 DataPilot window 窗口上,在这些区域中单击字段名按钮或右键单击字段名: Page、Column 或 Row。选择 Field Option;这将显示 Field Option 窗口。(可选:将指针停放在 DataPilot 表格上,右键单击 Page、Column 或 Row,然后选择 Field Option)。
3. 单击窗口上的选项卡之一并选择合适的小计选项(见表 4)。
表 4. 小计选项
|
选项
|
说明
| |
Never
|
不计算小计。
| |
Automatically
|
自动计算小计。
| |
Manually
|
选择这个选项,然后在列表中单击需要计算的函数。
| |
Using Function
|
单击用于计算小计的函数。仅当选择了 Manually 选项时,才可以使用该选项。
| |
Show items
without data
|
选择这个选项之后,最终的表格将包含空列和空行。
|
4. 单击窗口上的选项卡之一并选择合适的排序选项(见表 5)。单击 OK。
表 5. 排序选项
|
选项
|
说明
| |
Manually (Select items in the table and
drag to organize them)
|
通过将各项拖入到表格中进行手动排序。使用复合键 Ctrl + 单击来选择一个拖动项。
| |
Ascending
|
自动地按升序排列值。
| |
Descen
ding
|
自动地按降序排列值。
| |
Using Field
|
选择需要排序的字段。
|
合并数据
合并过程将来自几个电子表格的单元格的内容放到一个地方。通过以下步骤执行合并:
- 打开包含需要合并的单元格的文档。
- 选择 Manipulate > Consolidation,打开 Consolidation 对话框(见图 3)。
图 3. Consolidation 对话框
- 从“Source data range”字段选择需要合并到其他区域的源单元格。如果选择的单元格没有名称,单击“ Source data range ”旁边的字段。这时会出现一个闪动的文本指针。为第一个源数据单元格输入一个引用,或用鼠标选择单元格。
- 单击 Add 按钮在 Consolidation 区域字段中插入选中的单元格。选择更多的单元格并单击 Add。
- 通过从“Copy results to”字段选择一个目标单元格,指定显示结果的单元格。
如果目标单元格没有名称,单击“Copy results to”旁边的字段,并输入目标单元格的引用。除了这种方法之外,您还可以使用鼠标,或将指针放到目标单元格的左上角单元格上,从而选择所需的单元格。
- 从 Function 下拉列表选择一个函数。这个函数指定如何将需要合并的单元格的值连接起来。默认使用“Sum”函数。单击 OK 合并单元格。
- 如果您希望保留到源单元格而不是副本的链接,或希望在单元格合并后以不同的方式排列行或列,单击 Consolidation 对话框上的 More 按钮(见图 4)。
图 4. 合并单元格
- 选择“Link to source data”插入在目标单元格中生成结果的公式,而不是实际结果。如果您链接数据,在源单元格中进行的修改将自动更新到目标单元格。
在目标单元格中的对应单元格引用是以连续的行插入的,将对这些行进行自动排序并隐藏起来。最后,仅根据选择的函数显示最终结果。
- 在“Consolidate by”下选择 Row labels 或 Column labels,如果没有按原来的位置合并数据源的单元格,那么就是根据匹配的行或列标签合并它们。
如果要按照行或列标签合并单元格,必须在选择的源单元格中包含这些标签。
注意:标签中的文本必须完全相同,这样才能精确匹配行或列。如果行或列的标签与目标单元格中的标签不匹配,它将作为一个新行或列添加。
当您保存文档时,将保存源单元格和目标单元格的合并数据。下次打开已完成合并的文档时,将可以使用其中的合并数据。
应用 Solve Equations
在 Solve Equations 的帮助下,您可以计算已指定结果的公式中的一个值。因此,公式必须包含几个定值、一个变值和公式的结果。
通过例子能够更好地展示 Solve Equations:
我们为计算年利率创建一个表格(见图 5),其中包含的值有 Capital (C)、Years (n) 和Interest rate (i)。公式为:I = C * n* i / 100
图 5. Solve Equations 示例
注意,就像在标题单元格中一样,您也可以在公式中使用变量名:= 'Capital (C)' * 'Years (n)' * 'Interest rate (i)' / 100
此外,在公式中输入的名称必须与单元格中的名称完全一样,并且要包含在单引号中。
在这个例子中,投资资金为 $150,000,当利率为 8% 时,年利息收入为 $11,250(计算完成之后将格式化单元格)。
开始使用 Solve Equations
在这里,我们仍然以图 5 为例:
- 将指针放到图 5 中的 E5,并选择 Tools > Solve Equations。这将出现 Solve Equations 对话框,并且在 Formula Cell 字段中输入了正确的单元格。
- 将指针放到 Variable Cell 字段。在电子表格中,单击需要改变其值的单元格 A5。
- 在 Target Value 文本对话框中输入期望的结果。在这个例子中,该值为 15,000。单击
OK。
- 这时会弹出一个对话框,通知您 Solve Equations 已成功。这时,您已经可以使用结果。单击 Yes 在 A5 中输入结果。
使用 What-if
What-if 为计算包含相互关联因数的公式提供很大的帮助。What-if 计算允许创建一个值列表,您可以从中为特定的单元格或单元格组选择值。
当您从列表选择不同的值时,这些单元格的内容就会改变。如果您修改表格中的某个基本需求,就可以看到新的结果。 您可以命名以这种方式创建的 What-if,并比较它们。
创建自己的 What-If
要创建一个 What-If,您必须选择为 What-If 提供数据的所有单元格。您可以按照以下步骤创建一个称为“High Dollar Rate”的 What-if:
-
选择由现有场景的方框突出显示的单元格。还可以在表格中选择多个单元格。如果要选择多个单元格,则按下 Ctrl 键并单击每个单元格。例如,选择从 F18 到 F23 之间的单元格。
-
选择 Tools > What If;这将出现 Create What If 对话框。
-
输入“High Dollar Rate”作为这个场景的名称,其他字段保留默认值。单击 OK 关闭对话框。此时,将自动激活新的场景。
-
将方框中的值更改为将要应用到新场景的值。在这个例子中,修改美元比率,以及所有其他可能受其影响的值(例如经济增长和物价)。然后将显示修改数字后的结果。
宏和编程
这个小节介绍处理 Lotus Symphony Basic 中的宏的基础知识。
基础知识
Lotus Symphony Basic 代码基于子例程和函数。每个子例程或函数都可以调用其他子例程和函数。如果您为子例程或函数编写代码时很细心,那么就有可能在其他程序中重用它们。
什么是 sub?
sub 是 subroutine(子例程)的缩写,它在程序中处理特定的任务。子例程将一个任务分为多个单独的程序。将一个程序分为多个子程序能够增强可读性并减少错误。子例程很可能包含一些参数,但它并不将任何值返回给调用它的子例程或函数;例如 :
DoSomethingWithTheValues(MyFirstValue,MySecondValue)
|
什么是函数?
函数就是能够返回值的子例程。您可能在变量声明的右边使用函数,或在使用值的其他地方使用函数;例如:
MySecond Value = myFunction(MyFirstValue)
|
全局和局部变量
全局变量是对模块中的所有子例程和函数都有效的变量。它们在开始第一个子例程或函数之前,在模块的开头声明。在子例程或函数内部声明的变量仅对该子例程和函数有效。这些变量覆盖来自父例程或函数的使用相同名称的全局变量或局部变量。
结构化
将程序分为多个程序和函数(子例程和函数)之后,您可以将这些子例程和函数保存为文件,并在其他地方重用它们。
Lotus Symphony Basic 支持模块和库。子例程和函数通常包含在模块中,模块可以定义为全局或局部的。可以将多个模块合并到一个库中。此外,还可以使用 Macro 对话框将子例程、函数、模块和库从一个地方复制或移动到另一个地方。
语法
这个小节描述 Lotus Symphony Basic 的一些语法元素。
使用变量
下面介绍 Lotus Symphony Basic 中的变量的基本用法。
变量标识符的命名约定
变量名最多可以包含 255 个字符。变量名的第一个字符必须是从 A-Z 或 a-z 选择的一位字母。也可以在变量名中使用数字,但不能使用标点符号和特殊符号,不过下划线(“_”)除外。
在 Lotus Symphony Basic 中,变量标识符不区分大小写。变量名可以包含空格,但必须把空格包含在方括号中。
图 6 给出一些变量标识符示例。
图 6. 变量标识符示例
声明变量
在 Lotus Symphony Basic 中,不需要显式地声明变量;可以使用 Dim 语句声明变量。您可以一次声明多个变量,但必须用逗号分隔每个变量名。此外,如果要定义变量类型,可以在变量名后使用类型声明符号,或适当的关键字。
图 7 显示了一些关于变量声明的示例。
图 7. 变量声明示例
重要:在声明变量时,每次都需要使用类型声明字符,即使它已在声明中而不是关键字中使用。因此下面的语句是无效的:
DIM a$ Declares "a" as a String
a="TestString" Type-declaration missing: "a$="
|
注意:一旦将变量声明为某一类型之后,就不能使用相同的名称再将该变量声明为其他类型!
强制变量声明。要强制声明变量,需要使用命令:OPTION EXPLICIT。
Option Explicit 语句必须位于模块的第一行,并且要在 SUB 之前。一般而言,只有数组才需要显式地声明。所有其他变量都根据类型声明字符进行声明,或省略声明,使用默认类型 Single。
变量类型
Lotus Symphony Basic 支持 4 种变量类型:
-
Numeric 变量,它可以包含数值。这种类型的变量中,一些用于储存大型或小型数字,另一些用于存储浮点数字或分数。
-
String 变量,它包含字符串。
-
Boolean 变量,它包含 TRUE 或 FALSE 值。
-
Object 变量,它可以存储各种类型的对象,比如文档内部的表和文档。
整型变量。整型变量的范围是 -32768 ~ 32767。如果为一个整型变量赋予一个浮点值,小数位将被舍入到下一位整数中。程序能够快速计算整型变量,这种变量适合用于循环的计数器变量。整型变量仅占用 2 个字节的内存,它的类型声明字符是“%”:
Dim Variable%
Dim Variable As Integer
|
长整型变量。长整型变量的范围是 -2147483648 ~ 2147483647。如果为一个长整型变量赋予一个浮点值,小数位将被舍入到下一位整数中。程序能够快速计算长整型变量,这种变量适合用于针对大型数值的循环的计数器变量。长整型变量占用 4 个字节的内存,它的类型声明字符是“&”:
Dim Variable&
Dim Variable as Long
|
单精度变量。单精度变量包含正值和负值,其范围是 3.402823 x 1 0E38 ~ 1.401298 x 1 0E-45。单精度变量属于浮点变量,随着数字的非小数部分不断增大,小数精度会逐渐下降。
单精度变量适用于要求一般精度的数学计算。单精度变量的计算比整型变量慢,但比双精度变量快。单精度变量占用 4 个字节的内存,它的类型声明字符是“!”:
Dim Variable!
Dim Variable as Single
|
双精度变量。双精度变量包含正值和负值,其范围是 1.79769313486232 x 10E308 ~ 4.94065645841247 x 10E-324。双精度变量属于浮点变量,随着数字的非小数部分不断增大,小数精度会逐渐下降。
双精度变量适用于高精度计算,并且计算双精度变量所需的时间比单精度变量多。双精度变量占用 8 个字节的内存,它的类型声明字符是“#”:
Dim Variable#
Dim Variable As Double
|
货币型变量。货币型变量作为 64 位(8 字节)数字存储,并显示为固定小数点数字,它带有 15 个非小数位和 4 个小数位。它的值的范围是 -922337203685477.5808 ~ +922337203685477.5807。货币型变量能够以很高的精度计算货币值,它的类型声明字符是“_cnnew1@”:
Dim Variable@
Dim Variable As Currency
|
字符串变量:字符串变量能够容纳多达 65,535 个字符的字符串。每个字符都存储为相应的 Unicode 值。字符串变量适用于程序内部的文字处理,以及临时储存最长长度为 64 KB 的非打印字符。存储字符串变量所需的内存取决于变量中包含的字符数量。它的类型声明字符是“$”:
Dim Variable$
Dim Variable As String
|
布尔变量。布尔变量仅储存两个值之一:TRUE 或 FALSE。布尔变量用于存储二进制值,比如比较的结果,并且由 2 个字节的整型值表示。赋予布尔变量的值如果不等于“-1”,将被转换成“False”。布尔变量仅能使用关键字TRUE 或 FALSE 声明:
日期变量。日期变量仅能包含以内部格式存储的日期和时间值。使用 Dateserial、Datevalue、Timeserial 或 Timevalue 给日期变量赋的值都被自动转换为内部格式。
您可以使用 Day、Month、Year、Hour、Minute 和 Second 函数将日期变量转换成常规数。内部格式允许通过计算两个数字的差异比较日期/时间值。这些变量仅能通过关键字 Date 声明:
初始变量值
一旦声明了变量,它就被自动设置为“Null”值。注意以下约定:
-
数字变量在声明之后,就被自动赋予“0”值。
-
日期变量被从内部赋予 0 值,这与使用 Day、Month、Year、Hour、Minute 和 Second 函数将值转换为“0”是等效的。
-
字符串变量在声明之后,就被赋予空字符串("")值。
数组
Lotus Symphony Basic 能够识别由特定变量类型定义的一维或多维数组。数组适用于编辑程序中的列表和表。可以通过数字索引找到数组的每个元素。
必须使用 Dim 语句声明数组,并且有几种方式可以定义数组的索引范围(见图 8)。
图 8. 定义数组索引范围的方式
索引范围既可包含正数,也可包含负数。数组索引最多能够查找 16368 个元素。
常量
常量有一个固定值。它们仅在程序中定义一次,并且以后不能重新定义:
CONST ConstName=Expression
|
使用对象
对象目录为您在 Lotus Symphony 中创建的所有模块和对话框提供一个概览。单击 Macro 工具栏中的 Object Catalog 图标将显示对象目录对话框(见图 9)。
图 9. 对象目录
这个对话框以层次结构的方式显示所有的对象。双击每个列表条目将打开其中包含的下一级对象。如果要在编辑器中显示特定模块或将指针指向选中的子例程或函数,那么选择对应的条目并单击 Show 图标。
使用子例程和函数
现在我们描述子例程和函数在 Lotus Symphony Basic 中的用法。子例程(SUB)和函数(FUNCTION)能够将程序分成更多的逻辑部分,从而帮助您维护结构化视图。
子例程和函数的一个好处就是,当开发包含任务组件的程序代码时,您可以在其他项目中使用这些代码。
将变量传递给子例程(SUB)和函数(FUNCTION)
可以将变量传递给子例程和函数。必须将 SUB 或 FUNCTION 声明为可以接受参数:
SUB SubName( Parameter1 As Type, Parameter2 As Type,... )
Program code
END SUB
|
使用以下语法调用 SUB:
SubName(Value1, Value2,...)
|
传递给 SUB 的参数必须符合 SUB 声明中应该使用的参数。
这个过程也适用于 FUNCTION。此外,函数通常返回一个函数结果。函数的结果是通过将返回值赋值给函数名决定的:
FUNCTION FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type Program code
FunctionName=Result
End Function
|
使用以下语法调用 FUNCTION:
Variable=FunctionName(Parameter1, Parameter2,...)
|
通过值或引用传递变量
也可以通过值或引用将参数传递给 SUB 或 FUNCTION;然而,除非特别指定,否则将通过引用传递参数。这意味着 SUB 或 FUNCTION 将获得该参数,并且可以读取和修改它的值。
如果您希望通过值传递参数,那么在声明 SUB 或 FUNCTION 时在参数前面插入关键字“ByValue”;例如:
Sub ChangeValue( ByVal Parameter As Integer)
|
在这个例子中,FUNCTION 将不更改参数的原始内容,因为它获得的仅是值,而不是参数本身。
注意:在创建一个新的模型时,Lotus Symphony Basic 会自动插入一个称为“Main”的SUB。这个默认名称与 Lotus Symphony Basic 项目的顺序或开始点无关。重新命名 SUB 是安全的。
变量作用域
SUB 或 FUNCTION 中定义的变量仅在子例程退出之前有效。这称为“局部”变量。然后,但很多情况中,您希望变量对所有子例程以及所有库的各个模块都是有效的,或者在 SUB 或 FUNCTION 退出之后仍然有效。这个属性在声明变量时通过 Dim 语句中的关键字控制。
在 SUB 或 FUNCTION 之外声明变量:
DIM GLOBAL VarName As TYPENAME
|
只要 Lotus Symphony 会话还在继续,变量就一直有效。
DIM PUBLIC VarName As TYPENAME
|
变量在所有模块中都有效。
DIM PRIVATE VarName As TYPENAME
|
变量仅在这个模块中有效。
变量仅在这个模块中有效。
在退出 SUB 或 FUNCTION 之后保存变量内容:
DIM STATIC VarName As TYPENAME
|
在 FUNCTION 或 SUB 下次进入之前,变量会保留它的值。声明必须存在于 SUB 或 FUNCTION 内部。
指定函数的返回值
像变量一样,要确定函数的返回值的类型,必须在函数名之后包含一个类型声明字符,否则类型由“as”以及参数列表末尾的对应关键字指明;例如:
Function WordCount (WordText as String) as Integer
|
Lotus Symphony Basic IDE
这个小节描述 Basic 集成开发环境(IDE)的结构。.
Watch 窗口
Watch 窗口允许您在执行程序期间观察变量的值。为此,您需要在 Watch 文本框中定义需要观察的变量,然后单击 Add Watch 将变量添加到列表框并显示其值。
Watch
输入需要监视其值的变量的名称:
-
Remove Watch。从监视变量列表中删除选中的变量。
-
Editing the Value of a Watched Variable。显示被监视的变量列表。缓慢双击某个条目就可以编辑它的值。将使用新值作为程序的变量值。
-
Call Stack window (Calls)
。Call Stack 允许您在程序执行期间监视子例程和函数的序列。子例程就是自下向上显示的函数,最近的函数或子例程调用出现在列表的顶端。
管理断点:
指定断点选项:
-
Breakpoints。输入新断点的行号,然后单击 New。
-
Active。激活或停止当前的断点。
-
Pass Count。在断点生效之前,指定需要执行的循环的数量。
-
New。在指定的行号上创建一个断点
-
Delete。删除选中的断点。
Basic IDE 中的键盘快捷方式
图 10 显示了 Basic IDE 中的键盘快捷方式。
图 10. Basic IDE 键盘快捷方式
注意,使用 Shift+CTRL+Q 可以终止正在运行的宏,甚至在 Basic IDE 之外也可以。如果是在 Basic IDE 中,并且宏遇到一个断点暂停,可以通过 Shift+CTRL +Q 终止宏的执行,但只有在下一次使用 F5、F8 或 Shift+F8 时,您才会意识到这点。
使用宏
当选择了图像、框架或 OLE 时,选择您想执行的宏。可以在 Object 对话框的 Macro 选项卡或 Assign Macro 对话框中找到该函数,这取决于所选择的对象。
从 Visual Basic for Applications (VBA) 转换到 Symphony Basic
(SB)
VBA 宏不能在 Lotus Symphony 中运行,因此必须转换并调整它们。宏转换器是一个自动的转换工具,它将 Microsoft Office 的 VBA 宏转换成 Lotus Symphony 支持的 SB 宏。
要打开 Lotus Symphony 的宏编辑器,执行以下步骤:
-
选择 Tools > Macros > Macro....
-
单击 Edit 按钮启动 Basic 编辑器。
转换整个宏文件:
-
Basic 编辑器将从 Macro Toolbar 中的库列表框打开需要转换的 VBA 文件。
-
单击 Convert from VBA to SB 按钮;此时将弹出一个转换信息对话框。
事件
这将列出与所选对象的宏相关的事件。图 11 中的表描述了宏,以及可以链接到您的文档中的对象的事件。
图 11. 宏和事件
宏
当所选择的事件发生时,选择您希望执行的宏。框架允许您将事件链接到函数,因此该函数可以决定是处理事件,还是处理 Lotus Symphony 文档。
-
Category。列出打开的 Lotus Symphony 文档和应用程序。单击保存宏的位置的名称。
-
Macro name。列出可用的宏。单击想要分配给所选对象的宏。
-
Assign。将选中的宏分配给特定事件。在事件完成之后设置被分配的宏的条目。
-
Remove。删除分配给所选对象的宏。
-
Macro selection。选择想要分配的宏。
事件驱动的宏
这个小节描述如何给程序事件分配 Basic 程序。
当指定的软件事件发生时,您可以通过将宏分配给该事件自动地执行宏。图 12 中的表概述了程序事件,并指出所分配的宏的执行点。
图 12. 程序事件和宏的执行点
将宏分配给事件
通过以下步骤将宏分配给事件:
- 选择 Tools > Macros > Document Events Configure。
- 选择 Lotus Symphony 或 Document 选项决定分配是全局有效的,还是仅在当前文档中有效。
- 从 Events 列表中选择事件。
- 从 Macros 列表选择包含需要分配到选中的事件的宏的模块。这个列表包含一个层次结构列表,其中列出了模块、库、文件和模板。
- 从右边列表选择需要分配的宏;单击 Assign。
- 单击 OK 关闭对话框。
删除需要分配给事件的宏
通过以下步骤进行删除:
- 选择 Tools > Macros > Document Events Configure。
- 通过选择 Lotus Symphony 或 Document 选项决定删除是全局有效的,还是仅在当前文档中有效。
- 选择包含需要从 Events 列表中删除的宏的事件。
- 单击 Remove,然后单击 OK 关闭对话框。
调试基础程序
现在我们讨论在 Lotus Symphony Basic 中调试基础程序的子例程。
断点和单步执行
您可以使用单步执行检查基础程序的每行代码,看看是否存在错误。错误很容易跟踪的,因为您可以立即看到每个步骤的结果。编辑器的断点列中的指针指向当前的行,如果您希望在某个位置强行中断程序,那么可以设置一个断点。
双击编辑器窗口左边的断点列将在对应的行上生成一个断点。当程序遇到断点时,它的执行将中断。
通过单击 Single Step 图标启动单步执行,它使程序分成多个子例程和函数;而单击 Procedure Step 图标会启动子例程分步执行,它使程序以单步的形式跳过子例程和函数。
断点的属性
通过在断点列中右键单击断点,可以通过断点的上下文菜单访问断点属性。可以从上下文菜单选择 Active 激活或停止断点。断点停止之后,就不会再中断程序的执行。
从断点的上下文菜单选择 Properties 或从断点列的上下文菜单选择 Breakpoints,这样就会调用可以指定其他断点选项的 Manage Breakpoints 对话框(见图 13)。这个列表显示所有断点以及它们在源代码中对应的行号。
图 13. Manage Breakpoints 对话框
可以通过选中或取消选择 Active 复选框激活或取消断点。Pass Count 指定在程序遇到断点之后,经过多长时间才中断执行。如果输入 0(默认设置,见上图),程序在遇到断点时就会中断执行。
单击 Delete 将断点从程序中删除。
监视变量的值
您可以将变量的值添加到 Watch 窗口对其进行监视。要将变量添加到被监视变量列表,需要在 Watch 文本框中输入变量的名称并按 Enter 键。只显示在作用域范围之内的变量值。不在当前源代码位置定义的变量(“超出作用域”)仅显示其自身,而不是值。
您还可以在 Watch 窗口中添加数组。如果您在 Watch 窗口中输入不带索引值的数组的变量名,将显示整个数组的内容。
技巧:如果在运行时将鼠标悬停在编辑器中的预定义变量上,一个弹出窗口将显示该变量的内容。
Call Stack 窗口提供子例程和函数的调用层次结构概览。您可以使用这个窗口确定在当前的源代码中,哪些子例程和函数调用了哪些子例程和函数。
Lotus Symphony 的 Hyperion Essbase 电子表格插件
这个插件的功能是在 Lotus Symphony 中显示多维数据。用户只需简单的鼠标单击操作,就可以访问和分析 Essbase 服务器上的数据。该插件还允许多个用户同时访问 Essbase 服务器上的数据。
安装这个插件之后,将向 Lotus Symphony 添加一个特殊的菜单,该菜单提供以下功能:
-
连接到 Essbase 服务器,或断开到该服务器的连接,
-
从服务器获取数据并转移到工作表中,
-
向下或向上钻取工作表,以从多个视点分析数据。
现有的可访问的 Hyperion Essbase 服务器必须使用该插件。
软件需求
所需的软件包括:
-
操作系统:Microsoft Windows XP
-
语言:英语
-
Lotus Symphony:Lotus Symphony Beta 4 或更新版本
-
Hyperion Java TM 客户端
Hyperion 从第 7 版本开始提供 Java 客户端。这个客户端包含 3 个 Java JAR 文件,必须在安装 Lotus Symphony 插件之前将这些文件放到系统中:
-
ess_es_server.jar
-
essjapi.jar
-
log4j-1 .2.8.jar
您可以安装任何包含 Java 客户端 JAR 文件的 Hyperion 产品,比如 Hyperion Essbase - System 9 Release 9.3.1 Client(可从 Oracle Essbase Downloads Web 站点下载)。
安装插件
您的计算机应该已经安装了 Lotus Symphony。遵循以下步骤将插件安装到 Lotus Symphony:
- 将 Hyperion Java 客户端 JAR 文件复制到 Lotus Symphony 插件安装目录。查找Hyperion Java 客户端 JAR 文件:
-
安装了 Hyperion 客户端之后,您可以从安装目录获取 Java 客户端 JAR 文件。例如,如果您将“Hyperion Essbase - System 9 Release 9.3.1 Client”安装到 C:\Hyperion\AnalyticServices,那么 ess_es_server.jar 和 essjapi.jar 文件就位于 C:\Hyperion\AnalyticServices\JavaAPI\lib 目录下,而 log4j-1 .2 .8.jar 文件位于 C:\Hyperion\AnalyticServices\JavaAPI\external \css 目录下。
-
将 JAR 文件复制到 Lotus Symphony 插件安装目录。如果您将 Lotus Symphony 安装到 C:\IBM\Lotus\Symphony,那么插件的安装目录就是 C:\IBM\Lotus\Symphony\framework\shared\eclipse\plugins。将这 3 个 JAR 文件复制到该目录。
- 启动 Lotus Symphony。
- 在菜单上,选择 File > Application > Install;这时会出现 Install/Update 向导(见图 14)。
图 14. Install/Update 向导
- 选择选项“Search for new features to install”并单击 Next。
- 在 Applications Locations 屏幕上,单击按钮 Add Zip/Jar Location。
- 查找您下载的插件;例如,forum_support.symphony.updatesites.zip 是 Forum
Support Plug-in for Lotus Symphony 插件的 plug-in .zip 文件的名称。
- 选择该文件并单击 OK。
- 当出现 Edit Local Site 对话框时,核实所选文件的文件名并单击 OK(见图 15)。
图 15. Edit Local Site 对话框
- 在 Application Locations 屏幕上,您应该看到 Location List 包含了 Forum Support 插件文件;单击 Finish。
- 在 Search Results 屏幕上,单击 Forum Support 插件旁边的方框并选择它(见图 16)。
图 16. Search Results 屏幕
- 单击 Finish 完成安装。
安装完成之后,将提示您重启 Lotus Symphony。必须重启插件才能生效。
在 Lotus Symphony 重启时,您可能会看到工具栏中已经添加了关于该插件的按钮。对于其他插件,您可能会看到一个新菜单选项 Add-ins,而不是工具栏按钮。
卸载插件
通过以下步骤卸载插件:
-
选择 File > Application > Application Management。这将显示一个 Application Management 菜单窗口(见图 17)。
图 17. Application Management 菜单
-
从左侧的列表展开第四项,即 C:\Program Files\IBM \Lotus\Symphony\framework\shared\eclipse。单击突出显示需要删除的插件(见图 18)。
图 18. 卸载插件
- 注意,在屏幕的右侧,将给出针对突出显示插件的选项 Disable、Uninstall 或 Show Properties。单击 Uninstall。在这个例子中,选择卸载 Communities Feature 1.0.0。
- 将弹出一个窗口提示您是否卸载插件,单击 OK。
-
单击 Yes 重启 Lotus Symphony,完成卸载过程。
注意:在个别情况下,必须先禁用插件才能卸载它。为此,遵循开始的步骤,然后单击 Disable 而不是 Uninstall。然后将询问您是否禁用该插件并重启 Lotus Symphony。
结束语
希望这份白皮书能够帮助您调整关键的财务软件,让它们可以使用 Lotus Symphony Spreadsheets。这份白皮书并不是详尽的迁移指南;不过,它能够帮助您更轻松地学习和使用 Lotus Symphony Spreadsheets,从而提高生产力。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Ed Ward 是乔治亚州亚特兰大市 IBM 公司的软件工程师,他目前是 Lotus Notes and Domino 的 Calendar and Scheduling Support 团队的成员。他作为专业人员加入 IBM 还不到 2 年,在这段时间里,他获得了以下头衔:IBM Advanced Certified System Administrator、Security Professional 和 Application Developer for Lotus Notes and Domino 7。Ed 持有计算机科学和电机工程学学士学位。 |
对本文的评价
|