會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當(dāng)前位置:主頁 > 技巧 > Excel技巧 > 編程 > 正文

Excel中 BASIC 程序的運行

時間:2005-02-11 11:48 來源:Excel Home 作者:Kevin Zhou 閱讀:
在微軟的電子表格軟件EXCEL中,附有一個功能很強的編程語言-Visual Basic for Applications(本文中簡稱為VBA)。這實際上是微軟的Visual Basic的化身,微軟從Visual Basic中刪去了表格設(shè)計器(Forms Designer)后,將它附屬于EXCEL,并用對話表取代了表格設(shè)計器。另外,微軟使VBA能夠存取EXCEL的所有命令和對象(例如單元格、工作表等)。正因為如此,VBA可以控制EXCEL的所有功能,所以VBA是兼容了BASIC編程語言的命令和語法的EXCEL應(yīng)用軟件的超級宏語言。
  在EXCEL和VBA出現(xiàn)之前,許多計算機用戶都有一些用BASIC語言編寫的應(yīng)用程序。當(dāng)計算機的操作平臺升級為Windows,辦公軟件變成Office后,Windows界面下的軟件直觀、易用,使得人們再用那些DOS下BASIC程序時感覺十分別扭。所幸的是,BASIC和VAB同出于微軟公司,使得我們能比較容易地將這些過去的程序轉(zhuǎn)為EXCEL中的VBA。轉(zhuǎn)化后的程序利用EXCEL的界面輸入輸出數(shù)據(jù),既直觀又方便,有著源程序不可比擬的優(yōu)點。以下就介紹一下如何完成這個從BASIC到VBA的轉(zhuǎn)換。
  在EXCEL里,一段程序稱為一個“宏”。記錄程序的界面叫“模塊表”。要把BASIC的源程序輸入EXCEL,首先要找到模塊表。模塊表的調(diào)入在Office 95中與Office 97略有不同,這里以O(shè)ffice 95中的EXCEL為例進行敘述。在EXCEL中按以下順序選菜單:選“插入”,再選“宏表”,再選“模塊表”,這時就會出現(xiàn)一張空白的模塊表。
  在模塊表里輸入程序,最簡單的方法是把源程序直接用鍵盤輸入。如果你的源程序能夠被Office中的WORD或Windows中的書寫器、寫字板等讀出,那么就可利用“復(fù)制”、“粘貼”的功能將源程序貼到模塊表里。在許多情況下,WORD讀出來的BASIC源程序往往是一些不可識別的字符,無法直接復(fù)制。這里介紹另一種復(fù)制方法:在Windows下選中“MS-DOS方式”,就會打開一個DOS的窗口,在這個窗口里運行BASIC編程語言(如GWBASIC等)。加載(LOAD)想要轉(zhuǎn)換的源程序,用BASIC中的LIST命令就會在窗口中看到若干行源程序。將鼠標(biāo)移到窗口的上部工具欄里點擊“標(biāo)記”鍵,窗口的左上角會出現(xiàn)一個光標(biāo),在按住SHIFT鍵的同時用方向鍵移動光標(biāo)到窗口右下角,這時整個窗口都被點亮,再移動鼠標(biāo)到窗口上部的工具欄點擊“復(fù)制”鍵,再將DOS窗口極小化,打開EXCEL,調(diào)出模塊表,用EXCEL里的“粘貼”鍵就可把DOS窗口里的源程序粘在模塊表里,不斷地重復(fù)這一過程就可把整個源程序復(fù)制到EXCEL里。
  源程序進入模塊表后就可以對其進行重新編輯。因為VBA是兼容了BASIC編程語言的命令和語法的宏語言,所以BASIC的大部分程序行不用改寫就可以直接運行,要改動的只有以下幾個方面:
  1.給這段程序(宏)起個名字。比如起名為test,則在程序的開頭加上Sub test()語句,在程序的結(jié)尾加上End Sub語句。
  2.注意變量與數(shù)組不要重名。在BASIC中,允許有一個變量A和一個數(shù)組A(10)同時存在,而VBA中必須把其中一個改為A1或AA。
  3.輸入語句。在BASIC中,數(shù)據(jù)的輸入是用INPUT或READ語句;在VBA中,可以把要輸入的數(shù)據(jù)放到EXCEL工作表指定的單元格里,然后用對象存儲的CELLS方法去讀這些數(shù)據(jù)。例如在BASIC中:
  100 READ A,B
  120 DATA 10,20
  表示將數(shù)值10和20分別賦予變量A和B;在VB中:
  A = Worksheets ("Sheet1").Cells(1,1)
  B = Worksheets ("Sheet1").Cells(1,2)
  表示把EXCEL工作表Sheet1中第一行第一列單元格(A1單元)中的值賦給變量A;第一行第二列單元格(B1單元)中的值賦給變量B。只要在運行程序前將數(shù)值10和20分別放在A1和B1單元格里,其效果同上面的READ語句是一樣的。
  在程序的運行中,有時需要中間停頓一下,根據(jù)前一段運行情況再輸入一些數(shù)據(jù),在BASIC中,這種情況一般是用INPUT語句;在VBA中,可采取在輸入數(shù)據(jù)之前設(shè)一個STOP語句的方法,然后在指定的單元格里填入要輸入的數(shù)據(jù),再讓程序繼續(xù)運行(在EXCEL菜單中選擇“繼續(xù)運行”即可);蛘,你也可以用InputBox( )函數(shù)創(chuàng)建一個對話框進行輸入。下面就是創(chuàng)建對話框的語句:
  X1 = "請輸入金額"
  X2 = "輸入對話框"
  X = InputBox(X1,X2)
  當(dāng)程序運到這一句時,屏幕上會出現(xiàn)這樣一個對話框:
  輸入對話框
  請輸金額 確定
  取消 
  只要你在框中輸入文字,用鼠標(biāo)點一下“確定”,這時變量X的值就等于你輸入的文字。程序繼續(xù)運行。值得注意的是,如果你想輸入的是數(shù)字,則必須用Val()函數(shù)轉(zhuǎn)換一下,即在上述三句后多加一個語句:
  X = Val(X)
  4.輸出語句。在BASIC中,程序運行結(jié)果的輸出一般用的是PRINT或LPRINT語句,例如:
  PRINT C 表示將變量C的值顯示在屏幕上。
  LPRINT D 表示將變量D的值輸出到打印機。
  有時還用LPRINT語句打印出各種曲線。
  在VBA中,可以用對象存儲的CELLS方法將變量的值存放在EXCEL的某個工作表的某單元格上。為了使輸出與輸入的數(shù)據(jù)分開,輸出的數(shù)據(jù)可以放在與輸入數(shù)據(jù)不同的表上,如輸入放在Sheet1上,輸出就放在Sheet2上。如下例:
  Worksheets("Sheet2").Cells(2,5)=C
  Worksheets("Sheet2").Cells(2,6)=D
  分別表示將C和D 的值放在Sheet1表的第二行第五列(E2單元)和第二行第六列(F2單元)上。程序運行后,在Sheet2表上就可看到輸出的結(jié)果。然后利用EXCEL豐富的圖表生成功能將輸出的數(shù)字結(jié)果生成各種圖表。得到的效果要比BASIC打印出的曲線精彩得多。
  5.自定義函數(shù)。在VB中自定義函數(shù)的定義比在BASIC中的要復(fù)雜一些,它更像一段子程序,但調(diào)用的語句是一樣的。例如,把公式Y(jié)=Y1×Y2×Y3設(shè)為一個名為Y的自定義函數(shù),在BASIC中應(yīng)是:
  DEF Y(Y1,Y2,Y3)=Y1*Y2*Y3
  在VB中則寫成:
  Function Y(Y1,Y2,Y3)
  Y=Y1*Y2*Y3
  End Function
  并且這一段函數(shù)程序應(yīng)放在主程序(宏)的前面,即放在Sub test()的前面。
  按上述方法改好后,程序即可運行。在EXCEL菜單中,選“工具”,再選“宏”,這時出現(xiàn)一個對話框,在對話框里的“宏名/引用”框里,用鼠標(biāo)選中要運行的宏的名字(如上面的test),然后單擊“執(zhí)行”按鈕就可運行了。你也可以設(shè)定一個按鈕將程序與按鈕關(guān)聯(lián)起來,單擊按鈕就可以運行程序。關(guān)于如何設(shè)定按鈕,請參閱有關(guān)EXCEL的書籍。如果想要使程序更簡短高效,那就需要進一步學(xué)習(xí)VBA編程,充分利用VB的各種命令、函數(shù)和控制手段進行編程。順便說一句,QBASIC的源程序也同樣可以轉(zhuǎn)換,但QBASIC的源程序可以在WORD中直接顯示,這樣,復(fù)制到EXCEL中就更加方便。例如在BASIC中:
  100 READ A,B
  120 DATA 10,20
  表示將數(shù)值10和20分別賦予變量A和B;在VB中:
  A = Worksheets ("Sheet1").Cells(1,1)
  B = Worksheets ("Sheet1").Cells(1,2)
  表示把EXCEL工作表Sheet1中第一行第一列單元格(A1單元)中的值賦給變量A;第一行第二列單元格(B1單元)中的值賦給變量B。只要在運行程序前將數(shù)值10和20分別放在A1和B1單元格里,其效果同上面的READ語句是一樣的。
  在程序的運行中,有時需要中間停頓一下,根據(jù)前一段運行情況再輸入一些數(shù)據(jù),在BASIC中,這種情況一般是用INPUT語句;在VBA中,可采取在輸入數(shù)據(jù)之前設(shè)一個STOP語句的方法,然后在指定的單

(責(zé)任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
評價: