VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Excel中Basic程序的运行
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:11925, 日期:2001-06-24
Excel中Basic程序的运行
在微软的电子表格软件EXCEL中,附有一个功能很强的编程语言-Visual Basic for Applications(本文中简称为VBA)。这实际上是微软的Visual Basic的化身,微软从Visual Basic中删去了表格设计器(Forms Designer)后,将它附属于EXCEL,并用对话表取代了表格设计器。另外,微软使VBA能够存取EXCEL的所有命令和对象(例如单元格、工作表等)。正因为如此,VBA可以控制EXCEL的所有功能,所以VBA是兼容了BASIC编程语言的命令和语法的EXCEL应用软件的超级宏语言。
  在EXCEL和VBA出现之前,许多计算机用户都有一些用BASIC语言编写的应用程序。当计算机的操作平台升级为Windows,办公软件变成Office后,Windows界面下的软件直观、易用,使得人们再用那些DOS下BASIC程序时感觉十分别扭。所幸的是,BASIC和VAB同出于微软公司,使得我们能比较容易地将这些过去的程序转为EXCEL中的VBA。转化后的程序利用EXCEL的界面输入输出数据,既直观又方便,有着源程序不可比拟的优点。以下就介绍一下如何完成这个从BASIC到VBA的转换。

  在EXCEL里,一段程序称为一个“宏”。记录程序的界面叫“模块表”。要把BASIC的源程序输入EXCEL,首先要找到模块表。模块表的调入在Office 95中与Office 97略有不同,这里以Office 95中的EXCEL为例进行叙述。在EXCEL中按以下顺序选菜单:选“插入”,再选“宏表”,再选“模块表”,这时就会出现一张空白的模块表。

  在模块表里输入程序,最简单的方法是把源程序直接用键盘输入。如果你的源程序能够被Office中的WORD或Windows中的书写器、写字板等读出,那么就可利用“复制”、“粘贴”的功能将源程序贴到模块表里。在许多情况下,WORD读出来的BASIC源程序往往是一些不可识别的字符,无法直接复制。这里介绍另一种复制方法:在Windows下选中“MS-DOS方式”,就会打开一个DOS的窗口,在这个窗口里运行BASIC编程语言(如GWBASIC等)。加载(LOAD)想要转换的源程序,用BASIC中的LIST命令就会在窗口中看到若干行源程序。将鼠标移到窗口的上部工具栏里点击“标记”键,窗口的左上角会出现一个光标,在按住SHIFT键的同时用方向键移动光标到窗口右下角,这时整个窗口都被点亮,再移动鼠标到窗口上部的工具栏点击“复制”键,再将DOS窗口极小化,打开EXCEL,调出模块表,用EXCEL里的“粘贴”键就可把DOS窗口里的源程序粘在模块表里,不断地重复这一过程就可把整个源程序复制到EXCEL里。

  源程序进入模块表后就可以对其进行重新编辑。因为VBA是兼容了BASIC编程语言的命令和语法的宏语言,所以BASIC的大部分程序行不用改写就可以直接运行,要改动的只有以下几个方面:

  1.给这段程序(宏)起个名字。比如起名为test,则在程序的开头加上Sub test()语句,在程序的结尾加上End Sub语句。

  2.注意变量与数组不要重名。在BASIC中,允许有一个变量A和一个数组A(10)同时存在,而VBA中必须把其中一个改为A1或AA。

  3.输入语句。在BASIC中,数据的输入是用INPUT或READ语句;在VBA中,可以把要输入的数据放到EXCEL工作表指定的单元格里,然后用对象存储的CELLS方法去读这些数据。例如在BASIC中:

  100 READ A,B

  120 DATA 10,20

  表示将数值10和20分别赋予变量A和B;在VB中:

  A = Worksheets ("Sheet1").Cells(1,1)

  B = Worksheets ("Sheet1").Cells(1,2)

  表示把EXCEL工作表Sheet1中第一行第一列单元格(A1单元)中的值赋给变量A;第一行第二列单元格(B1单元)中的值赋给变量B。只要在运行程序前将数值10和20分别放在A1和B1单元格里,其效果同上面的READ语句是一样的。

  在程序的运行中,有时需要中间停顿一下,根据前一段运行情况再输入一些数据,在BASIC中,这种情况一般是用INPUT语句;在VBA中,可采取在输入数据之前设一个STOP语句的方法,然后在指定的单元格里填入要输入的数据,再让程序继续运行(在EXCEL菜单中选择“继续运行”即可)。或者,你也可以用InputBox( )函数创建一个对话框进行输入。下面就是创建对话框的语句:

  X1 = "请输入金额"

  X2 = "输入对话框"

  X = InputBox(X1,X2)

  当程序运到这一句时,屏幕上会出现这样一个对话框:

   输入对话框

   请输金额 确定

   取消

  只要你在框中输入文字,用鼠标点一下“确定”,这时变量X的值就等于你输入的文字。程序继续运行。值得注意的是,如果你想输入的是数字,则必须用Val()函数转换一下,即在上述三句后多加一个语句:

  X = Val(X)

  4.输出语句。在BASIC中,程序运行结果的输出一般用的是PRINT或LPRINT语句,例如:

  PRINT C 表示将变量C的值显示在屏幕上。

  LPRINT D 表示将变量D的值输出到打印机。

  有时还用LPRINT语句打印出各种曲线。

  在VBA中,可以用对象存储的CELLS方法将变量的值存放在EXCEL的某个工作表的某单元格上。为了使输出与输入的数据分开,输出的数据可以放在与输入数据不同的表上,如输入放在Sheet1上,输出就放在Sheet2上。如下例:

  Worksheets("Sheet2").Cells(2,5)=C

  Worksheets("Sheet2").Cells(2,6)=D

  分别表示将C和D 的值放在Sheet1表的第二行第五列(E2单元)和第二行第六列(F2单元)上。程序运行后,在Sheet2表上就可看到输出的结果。然后利用EXCEL丰富的图表生成功能将输出的数字结果生成各种图表。得到的效果要比BASIC打印出的曲线精彩得多。

  5.自定义函数。在VB中自定义函数的定义比在BASIC中的要复杂一些,它更像一段子程序,但调用的语句是一样的。例如,把公式Y=Y1×Y2×Y3设为一个名为Y的自定义函数,在BASIC中应是:

  DEF Y(Y1,Y2,Y3)=Y1*Y2*Y3*

  在VB中则写成:

  Function Y(Y1,Y2,Y3)

  Y=Y1*Y2*Y3

  End Function

  并且这一段函数程序应放在主程序(宏)的前面,即放在Sub test()的前面。

  按上述方法改好后,程序即可运行。在EXCEL菜单中,选“工具”,再选“宏”,这时出现一个对话框,在对话框里的“宏名/引用”框里,用鼠标选中要运行的宏的名字(如上面的test),然后单击“执行”按钮就可运行了。你也可以设定一个按钮将程序与按钮关联起来,单击按钮就可以运行程序。关于如何设定按钮,请参阅有关EXCEL的书籍。如果想要使程序更简短高效,那就需要进一步学习VBA编程,充分利用VB的各种命令、函数和控制手段进行编程。顺便说一句,QBASIC的源程序也同样可以转换,但QBASIC的源程序可以在WORD中直接显示,这样,复制到EXCEL中就更加方便。