技术文栏 - 其它文档 - 电脑应用 - 浏览文章 - Excel2000及其在公路工程项目经济评价中的应用
Excel2000及其在公路工程项目经济评价中的应用
http://17grow.com 2003-12-25 0:36:00
Excel2000及其在公路工程项目经济评价中的应用

周荣克
(济源市交通局勘察设计室,河南济源454650)

摘 要:很多人都在使用Excel,但大多数人都不了解如何利用Excel 2000 Visual Basic语句访问Excel中工作表的Range对象、表格行和列等对象,以及如何利用Excel 工作表常用的事件进行编程等,文章阐述了这些问题,并在最后以一个在公路工程项目经济评价实例详细地说明了如何在Excel 2000中使用Visual Basic编程。

关键词:Excel、Visual Basic、编程、经济评价
许多人接触Excel已经有相当长的时间了,他们也许天天都在使用Excel,也认真学习过至少一本Excel教程,可是对于Excel所具备的强大功能却知之甚少。其实Excel宏就是嵌在Excel中的Visual Basic语句代码。计算机即使不安装Visual Basic语言系统也不要紧,只要安装了Microsoft Office,它就带有内置的Microsoft Excel Visual Basic 语言。本文就如何在Excel 2000中使用Visual Basic语言做一定的探讨。
一、Excel对象介绍
我们在Excel中首先建立的是工作簿,而工作薄又由工作表构成,工作表由区域或单元格等具体的对象构成,它们之间的关系如图1所示。
1.Workbooks:返回一个Workbooks集合,此集合代表所有打开的工作簿。
2.Worksheets:应用对象,返回Sheets集合,该集合代表活动工作簿中的所有工作表。
3.Range对象:代表某一单元格、某一行、某一列、某一选定区域(该选定区域可包含一个或若干连续单元格区域)或者某一三维区域。

图1 Excel中对象的关系
二、Microsoft Excel Visual Basic访问Excel对象的方法
Excel中非常重要的对象是Range对象,我们可用Range(arg)(其中arg为区域名称)返回代表工作表中单个单元格或单元格区域的Range对象。下面的例子将单元格A1中的值赋给单元格A5。
Worksheets(“Sheetl”).Range“A5”).Value=Worksheets(“Sheetl”).Range(“A1”).Value
我们如果想引用Excel工作表中的行或列,可用Rows属性或Columns属性处理整行或整列。这两个属性返回代表单元格区域的Range对象。下例中,用Rows(1)返回工作表“Sheetl”上的第一行,然后将该行的Font对象的Bold属性设置为True。
Worksheets(“Sheetl”).Rows(1).Font.bold=True
下面的语句在工作表第二行前插人一新行。
Sheetl.Rows(2).Insert
我们还可以采用编号来引用单元格,用Cells属性及行号和列标引用单个单元格。该属性返回代表单个单元格的Range对象。下例中,Cells(6,1)返回工作表“Sheetl”上的单元格“A6”,然后将其值设置为10。
Worksheets(“Sheetl”).Cells(6,1).Value=10
如果想处理活动单元格,可以用ActiveCell属性返回代表活动单元格的Range对象。可对活动单元格应用Range对象的任意属性和方法,如下例所示。
Worksheets(“Sheetl”).Activate
ActiveCell.Value=25
注意:只有活动单元格所在的工作表处于活动状态时,才能处理该活动单元格。
三、利用Excel对象的事件
Excel工作表常用的事件有Activate、Calculate、Change等,在默认情况下这些事件是激活的,它们常常发生在激活工作表或用户修改工作表上的单元格数据时。我们在使用Excel时,不妨利用其工作表上的事件进行编程,也会收到很好的效果。具体方法是:用右键单击某个工作表标签,再单击快捷菜单上的“查看代码”命令,然后在“过程”下拉列表框内选中所需的事件名称。下面的一段代码写在工作表Sheet2的Activate(激活)事件中,作用是每当用户在查看Sheet2工作表时先显示一个提示信息对话框,用以提示用户本工作表的内容。
Private Sub Worksheet_Activate()
Ok=MsgBox(“这是第二季度的产量报表!”,vbOKOnly,“提示信息”)
End Sub
四、Excel中自定义函数
Excel已经提供了许多功能强大的函数,但有时也可能无法满足我们的要求,我们可以利用Excel Visual Basic自定义函数,方法是首先进入Excel,选“工具”菜单的“宏”下的“Visual Basic编辑器”,然后在“Visual Basic编辑器”中选择“插入”菜单下的“添加模块”,在代码窗口输入函数内容。你建立的函数在Excel中位于“用户定义”类别下,你可以选择使用它了。例如下面的自定义函数功能是返回任意两个单元格中的日期相差的天数。
Function subab(a As Date,b As Date) As Integer
subab=a-b
End Function
五、一个例子:公路工程项目经济评价
下面的例子在Excel中巧妙地利用了Visual Basic语句,在对公路工程项目进行经济评价时能带来很大的方便。此图中有三个工作表s1、s2、s3,下面看到的为s3,双击s3可打开s1、s2。在s2中输入路线长度、交通量,在s1中输入费用流量。工作表s1为经济内部收益费、经济效益净现值、经济效益费用比、投资回收期计算表;工作表s2为效益计算表。关于这两个表不再详细叙述(若有兴趣,可与作者联系)。工作表s3为敏感性分析计算表,开始前的状态见图2所示。



图2 初始状态
下面所列内容为“分析”按钮的VB程序代码:
Private Sub CommandButton1_Click()
Worksheets("s1").Activate
Worksheets("s2").Activate
Worksheets("s3").Activate
For m = 0.8 To 1.3 Step 0.1
For n = 0.8 To 1.3 Step 0.1
Worksheets("s1").Cells(10, 1).Value = n
Worksheets("s1").Cells(14, 1).Value = m
l = 10 * n - 5
x = 40 * m - 29
Worksheets("s3").Cells(x, l).Value = Worksheets("s1").Cells(23, 3).Value
Worksheets("s3").Cells(x + 1, l).Value = Worksheets("s1").Cells(21, 3).Value
Worksheets("s3").Cells(x + 2, l).Value = Worksheets("s1").Cells(20, 3).Value
Worksheets("s3").Cells(x + 3, l).Value = Worksheets("s1").Cells(24, 3).Value
Next n
Next m
End Sub
点击s3中的“分析”按钮,便可以得到该项目敏感性分析的结果,结束状态见图3所示。
国民经济评价敏感性分析
费用变动 -20% -10% 0% 10% 20%
效益变动 ENPV(万元) 1469.88 1190.65 911.42 632.20 352.97
-20% EIRR(%) 0.18 0.17 0.15 0.14 0.13
EBCR 1.65 1.47 1.32 1.20 1.10
N(年) 13 14 16 18 20
-10% ENPV(万元) 1936.68 1657.46 1378.23 1099.01 819.78
EIRR(%) 0.20 0.18 0.17 0.16 0.15
EBCR 1.86 1.65 1.49 1.35 1.24
N(年) 11 13 14 16 17
0% ENPV(万元) 2403.49 2124.27 1845.04 1565.81 1286.59
EIRR(%) 0.22 0.20 0.19 0.17 0.16
EBCR 2.06 1.84 1.65 1.50 1.38
N(年) 10 11 13 14 15
10% ENPV(万元) 2870.30 2591.07 2311.85 2032.62 1753.40
EIRR(%) 0.24 0.22 0.20 0.19 0.17
EBCR 2.27 2.02 1.82 1.66 1.52
N(年) 9 10 11 13 14
20% ENPV(万元) 3337.11 3057.88 2778.66 2499.43 2220.20
EIRR(%) 0.25 0.23 0.21 0.20 0.19
EBCR 2.47 2.20 1.98 1.81 1.66
N(年) 9 9 10 11 13



图3 结束状态

参考文献:
[1)赵艳霞,卢正明.Excel2000基础与应用[M].北京:高等教育出版社,2007.7.
[2]陈明.Visual Basic程序设计[M].北京:中央广播电视大学出版社,2001.2.

Visual BaSic:Programming in Excel 2000
Zhou rong-ke
(Reconnaissance and Design section office Jiyuan traffic,Jiyuan 454650,Henan,China)
AbStract:Many people are using Excel,but most of them don’t know how to make use of Excel 2000 Visual Basic’s commands to access the range and rows objects of the Worksheet in Excel,and how to use the worksheet’s useful events to program.This article expounds these questions and gives an example to show how to use VB to program in Excel2000.
Key words:Excel;Visual Basic;programme

作者简介:
周荣克:(1971.5-- )河南省南阳人,济源市交通局勘察设计室工程师
Email:jyjiaotong@sina.com
Tel:0391-6687373

1/1页次 第1页
所属分类: 其它文档 - 电脑应用   所属专题:
共有 3441 人次浏览 收藏本页 返回上一页 责任编辑:
相关文章