top
Loading...
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中就更加方便。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗