设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1721|回复: 0
打印 上一主题 下一主题

[VBA编程/宏] Excel中Basic程序的运行

[复制链接]
跳转到指定楼层
1#
发表于 2004-7-25 19:43:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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语句打印出各种曲线。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-2 18:23 , Processed in 0.111750 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表