VB程序设计课件_第1页
VB程序设计课件_第2页
VB程序设计课件_第3页
VB程序设计课件_第4页
VB程序设计课件_第5页
已阅读5页,还剩318页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualBasic程式設計概述1.1Vb功能特點1.2可視化編程的概念1.3面向對象的有關概念1.4Vb集成開發環境1.5Vb程式設計的一般步驟第一節Vb功能特點

面向對象的可視化的程式設計方法事件驅動的程式設計機制簡單易學的程式設計語言互動式的集成開發環境第二節可視化編程的概念

傳統的程式設計方法針對用戶介面設計程式代碼可是化編程的優點第三節面向對象的有關概念對象的概念是表示現實世界中某個具體的事物,或者對象是具有特殊屬性(數據)和行為方式(方法)的實體,建立一個對象後,其操作通過與該對象有關的屬性、事件和方法來描述。對象的建立和編輯

建立:①單擊工具箱裏相應對象的圖示,然後在窗體上拖動②雙擊工具箱裏相應對象的圖示

選定:單擊選定一個;Ctrl+單擊選定多個不連續;Shift+單擊選定多個連續刪除:選定按Del鍵對象的屬性、事件和方法屬性:一個對象的特徵。可在設計階段利用屬性窗口直接設置對象的屬性,也可在程式代碼中利用語句實現,格式:對象名.屬性名=屬性值

事件:由VB預先設置好的、能被對象識別的動作。如:Click(單擊)、Change(改變)等。

事件過程:對象的事件發生後,應用程式處理這個事件所執行的一段代碼。一般格式如下:

PrivateSub對象名_事件名([參數列表])……

EndSub方法系統提供,用戶可以直接調用。一般格式如下:

[對象.]方法名[參數列表]第四節Vb集成開發環境VB6.0的安裝添加或刪除VB6.0組件VB6.0的啟動方法VB6.0集成開發環境1)主窗口 2)窗體窗口3)屬性窗口 4)工程資源管理器窗口5)代碼窗口 6)窗體佈局窗口7)立即窗口 8)工具箱窗口第五節Vb程式設計的一般步驟VB應用程式開發的全過程(1)介面設計(2)編寫代碼(3)保存和運行(4)編譯與打包(5)安裝運行VB應用程式開發的主要步驟開發一個VB應用程式一般有以下三個主要步驟:(1)設計應用程式介面(2)設置對象屬性(3)編寫程式代碼第二章窗體與基本控件

涉及內容:2.1窗體2.2基本控件以及控件的格式化2.3基本控件的格式化2.4簡單語句一窗體1.窗體常用屬性

Name對象的名稱指定窗體的名稱,在程式代碼中用這個名稱引用該窗體。第一個窗體的名稱缺省值為form1,通常要給name屬性設置一個有實際意義的名稱,便於識別。

Caption對象的標題設置窗體標題欄顯示的文本。

Height對象的高度Width對象的寬度設置窗體的高度和寬度。單位為Twip。1Twip=1/20點=1/1440英寸=1/567cmEnabled對象的啟動或禁止用來設置窗體是否回應滑鼠或鍵盤事件。缺省時為True,窗體能夠對用戶產生的事件作出反映。Visible對象的可見性設置窗體是否顯示。True(窗體可見),False(運行時,窗體及其上面的對象都將被隱藏)Top對象的頂邊距離Left對象的左邊距離Backcolor設置窗體的背景顏色;Forecolor設置窗體的前景顏色。Font設置窗體上字體的樣式,大小,字形等。Picture設置在窗體中顯示的圖片。

注意:要在程式中設置該屬性的值,需要使用LoadPicture函數。WindowStare屬性設置窗體運行時的大小狀態。有三個可選值:0-Normal窗體大小由Height和Width屬性決定,此值為缺省值;1-Minimized窗體最小化成圖示;2-Maximized窗體最大化,充滿整個螢幕。2.窗體事件和方法事件Click(單擊)事件:單擊滑鼠左鍵時觸發

DblClick(雙擊)事件:雙擊窗體時觸發

Load(裝入)事件:窗體被裝入工作區時觸發方法

Print

格式:[對象名.]Print[運算式列表][;|,]功能:在對象上輸出資訊例如:Form1.Print“VB”;”程式設計”

Cls

格式:[對象名.]Cls

功能:清除運行時用Print方法在窗體或圖片框種顯示的文本或圖形例如:Picture1.Cls

Move

格式:[對象名.]Move左邊距離[,上邊距離[,寬度[,高度]]]功能:移動窗體或控件,並可改變其大小例如:Text1.Move800,800,4000,3000

相關例子下載

二基本控件以及控件的格式化1.命令按鈕常用屬性:Enabled屬性:描述控件是否可用。

false:不可獲得焦點

true:可以獲得焦點,能觸發滑鼠事件Visable屬性:描述控件是否可見。

false:不可見,即隱藏(命令按鈕)

true:可見Default屬性和Cancel屬性

default屬性為true,則該按鈕為默認按鈕,回車操作相當於單擊此按鈕

cancel屬性為true,則該按鈕為默認的取消按鈕,按ese相當於單擊此按鈕Style屬性用來設置命令按鈕的顯示類型。其屬性可設置為:0-Standard:標準的,命令按鈕上不能顯示圖形和背景色,此為缺省值。1-Graphical:圖形的,可顯示圖形和背景色。Picture屬性設置命令按鈕中要顯示的圖形。只有將Style屬性設置為1,圖形才能在按鈕上顯示。ToolTipText設置滑鼠在命令按鈕上停留的提示文本資訊。事件:

命令按鈕常用事件是Click(單擊)事件。即程式運行後,單擊滑鼠按鈕時所觸發的事件。2.標籤(Label).作用:固定位置顯示文本,僅用於顯示

現有如下程式:用於顯示輸入的姓名、性別、年齡等內容的清空,點擊顯示按鈕則在最下麵的文本框中顯示輸入的內容,點擊退出按鈕退出程式)

PrivateSubForm_Load()Label4.Caption=''EndSubPrivateSubCommand1_Click()Text1.Text="“,Text2.Text=""Text3.Text=""EndSubPrivateSubCommand2_Click()Label4.Caption=Label4.Caption+Label1.Caption&Text1.Text&Label2.Caption&Text2.Text&Label3.Caption&Text3.TextEndSubPrivateSubCommand3_Click()EndEndSub

標籤常用屬性

alignment:文本對齊方式0:代表左對齊1:右對齊2:居中

name:標籤的名字,用來標識一個標籤

caption:標籤中顯示出來的文字,注意與name屬性的區別。

forecolor:標籤的前景色,即文字的顏色

backcolor:標籤的背景色

backstyle:標籤的背景模式

0:不覆蓋原背景(透明)1:覆蓋原背景

top:標籤左頂點的Y座標

left:標籤的左頂點的X座標

width:標籤的寬度

height:標籤的高度

font:標籤的字體

enabled:標籤是否可用。值為true或falsevisible:標籤是否可見。值為true或false

常用事件a.change事件:當標籤的內容更改時觸發,即在程式中更改標籤的內容時。

b.click事件:單擊事件,點擊標籤觸發該事件

c.dbclick事件:雙擊事件,雙擊標籤時觸發該事件標籤的其他用法標籤除了直接在設計階段設置之外,也常常在運行階段用程式的方式來顯示時間。time$是一個與時間有關的函數,由於它的返回值是字串,因此可以把它賦值給標籤的標題,這樣就可以用標籤來顯示時間,例如:label1.caption=time$

當要在標籤中同時顯示2行以上的字串,就一定要靠程式,在字串之間加上chr$(13)+chr$(10)控制碼。例如:label1.caption=time$+chr$(13)+chr$(10)+date$3.文本框用於輸入、編輯文本或用於輸出、顯示文本,文本框最多可容納的字元為2048個。但如果Multline=True,則輸入的字元數可達32K。

屬性如下:.multiline=true‘可輸入、顯示多行文本

.scrollbars=3-both‘加滾動條.selstart=數字‘設置所選文本的起始點.sellength=選定長度

(文本框)

方法.seltext例程:

OptionExplicitPrivateaa,compare:privateaddressAsIntegerPrivateSubCommand1_Click()aa=InputBox("請輸入你要查找的內容","查找")

address=InStr(1,Text1.Text,aa,vbTextCompare)

'前者為在哪個串中搜索,在串1中搜索串2

Ifaddress>0Then

Text1.SetFocus:Text1.SelStart=address–1:Text1.SelLength=Len(aa)

Else

MsgBox"沒有相關內容"

EndIfEndSubPrivateSubForm_Load()Text1.Text=“hfsdfonrklesnflkshdncvoisnhdlfmnsdlfjksdjfsdflksdjflksjdfl"_&"skldflsdjflsjflskdjflksdjcvosdjflskdjflksdjvlkhsndfksdlfjlksadjflk"EndSub事件chang‘當文本框中內容發生變化時觸發該事件

keydown,keyup‘按鍵(在顯示出按鍵內容的同時)與提起按鍵時觸發事件參數:[indexasinteger,]keycodeasintegert,shiftasinteger)a.index:當控件是控件數組中的一個元素時,index代表在數組是索引值,即下標

b.keycode:鍵盤掃描碼。‘例:13對應回車

c.shift:代表shift,ctrl,alt鍵的狀態;是一個3位的二進位位域。(111)=>(alt,ctrl,shift)

故shift=6代表:110=>同時按下alt,ctrl兩鍵以上可判定是否只按下某鍵;但是如果需要瞭解是否按下了某鍵,則需要與特定數進行遮罩Keypress事件:用於截獲在文本框/組合框中輸入的按鍵;Sub控件名_keypress([indexasinteger,]keyasciiasinteger)參數:([indexasinteger,]keyasciiasinteger)a.index:當控件是控件數組中的一個元素時,index代表在數組是索引值,即下b.keyascii:返回標準的ascii鍵碼可以用chr(keyascii)將ascii轉化為相應的字元;或用=asc(char)將字元轉為ascii碼.(用於判定輸入是否為某字元)注意:keypress事件不是指出所按字元在鍵盤上的物理位置,而是傳送一個字符,故它可以判別大小寫。相反,keyup/keydown能識別的是所按字元在鍵盤上的物理位置,則大小寫字元的keycode碼是一樣的。(若要在keyup/keydown中判別字元的大小寫,需判定是否為shift+該鍵)

例程:檢驗輸入(key_down代碼詳解)PrivateSubCommand1_Click()num=Val(Text_day)Ifnum>31Ornum<1Then

Beep:MsgBox“輸入日期有誤“:Text_day.SetFocus:ExitSub

EndIfnum=Val(Text_month.Text)Ifnum>12Ornum<1Then

Beep:MsgBox“輸入月份有誤“:Text_month.SetFocus:ExitSub

EndIfnum=Val(Text_year.Text)Ifnum>2001Ornum<1900Then

Beep:MsgBox“輸入年份有誤“:Text_year.SetFocus:ExitSub

EndIfEndSubPrivateSubText_day_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then

Beep:MsgBox“請輸入數字“:KeyAscii=0

EndIfEndSub

PrivateSubText_month_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then

Beep:MsgBox"請輸入數字“KeyAscii=0

EndIfEndSubPrivateSubText_passwd_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then

Beep:MsgBox"請輸入數字“:KeyAscii=0

EndIfEndSubPrivateSubText_year_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then

Beep:MsgBox"請輸入數字“:KeyAscii=0

EndIf‘8代表退格符EndSubPrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=13ThenMsgBox“按下了回車符"

If(ShiftAnd2)>1ThenMsgBox“你按下了ctrl鍵"

EndSub三基本控件的格式化1.控件的添加/刪除A:窗體中添加控件(1)在工具箱中單擊所要添加的控件,然後將滑鼠移動到窗體中,此時滑鼠指針變為十字,在需要加入控件的地方按住滑鼠左鍵拖動成想要的尺寸,在釋放滑鼠左鍵,就可以看到控件被繪製到窗體上。按住“Ctrl”鍵,可以繪製多個相同控件。(2)單擊將要刪除的控件,再按“Del”即可,誤刪可以使用“Ctrl+Z”還原。2.調整控件的大小與位置

調整大小方法:用滑鼠單擊需要調整的對象,再控件四周出現8個藍色矩形小方框“尺寸柄”,通過它可以調整。調整位置的方法:A:滑鼠拖動對象B:使用Ctrl+方向鍵C:Ctrl+Shift鍵,再用滑鼠移動可以微調控件位置。其中A:和B:兩種方法都只能以網格為單位,也便於多個控件對齊。3.窗體與控件佈局調整控件佈局調整:進行調整之前都必須先選定需要調整的控件。A:通過“格式”菜單進行調整;

B:通過“窗體編輯器”工具欄。窗體佈局調整是指決定程式運行時,窗體在螢幕上出現的位置。利用“窗體佈局窗口”,可以進行調整。具體步驟為:視圖窗體佈局窗口當重新調整“窗體佈局窗口”時,每個窗體都將相當於設計窗口的大小進行調整。客戶區域的左上角代表桌面座標(0,0)點。

多個控件的選定方法:A:使用Shift鍵配合滑鼠的單擊;B:使用滑鼠在窗體上拖出一方框,在框內的控件將被全部選中。四簡單語句1.Print方法Print是輸出數據的一種重要的方法。(1)格式[對象名.]Print[運算式列表](2)功能在對象上輸出運算式的值。(3)說明A:對象名可以是Form(窗體),Debug(立即窗口),Print(印表機)等。例如:Print”12*2=“;12*2‘在當前窗口上輸出12*2=24Picture1.print“VB”‘在圖片框Picture1上輸出VB;Printer.print“OK”‘在印表機上輸出OKB:運算式列表是一個或多個運算式,若省略此項,則輸出一空行。輸出數據時,數值數據的前面有一個符號位,後面有一個空格;而字串前後都沒有空格。相關例子:例1.Print3;4‘用“;”分隔的各項,按緊湊格式顯示;

例2.Print‘輸出空行例3.Print“1234567”;Spc(2);”abcdef”‘輸出數據時,字串前後都沒有空格。例4.PrintTab(2);”**”;Tab(6);”**”;Tab(10);”**”;Tab(14);”**”‘Spc(2)使字串間留有兩個空格,Tab函數,使第2,6,10,14列定位輸出“**”.2.InputBox輸入框此函數可以生成輸入框來接受用戶的輸入。(1)格式InputBox(提示[,標題][,缺省值][,x座標值][,y座標位置])(2)功能生成一個能接受用戶輸入的對話框,並返回用戶在對話框中輸入的資訊。(3)例子說明A$=InputBox(“第一項為提示”&vbNewLine$“用vbNewLine實現換行”,“第二項為標題”,“第三項為缺省值”,200,200)第一項“提示”;第二項“標題”;第三項“缺省值”;第四項“x座標位置”;第五項“y座標位置”。3.MsgBox消息框此函數可生成用戶提示資訊和選擇互動式對話框。(1)格式MsgBox(提示[,按鈕數值][,標題])(2)功能MsgBox函數在對話框中顯示資訊,在用戶單擊對話框上的按鈕時,可返回一個整數以標明用戶單擊的是那個按鈕。(3)說明第一項“提示”:指定在消息框中出現的文本;第二項“按鈕數值”:整數運算式,指定消息框中出現的按鈕和圖示;第三項“標題”:指定消息框的標題。4.Cls語句(1)格式[對象名.]Cls(2)功能清除窗體(Form)或圖片框(PictureBox)中由Print方法顯示的文本和圖形方法所生成的圖形,並把輸出位置移動到對象的左上角。(3)說明格式中的對象可以是窗體或圖片框,如果省略對象名,則清除當前當前窗體的顯示內容。用Cls語句清楚後的區域以背景色填充,但Picture屬性的背景位圖和放置的控件不受影響。(4)舉例PrivateSubForm1_Click()ClsEndSub5.Rem語句(1)格式‘|Rem<注釋內容>(2)功能實現在代碼中加入用來解釋或說明的附加文本。(3)說明為提高程式的可讀性,通常在程式的適當位置加上必要的注釋。注釋語句是非執行語句,不參加編譯,對程式運行無影響。(4)例子Mystr1=“Hello”‘這也是一條注釋,無需使用冒號。6.End語句(1)格式End(2)功能用來結束程式的執行,並關閉已打開的檔。(3)說明它提供了一種關閉程式的方法。執行它,會卸載程式中所有窗體,釋放所有記憶體。(4)例子PrivateSubCommand4_click()‘單擊“退出”按鈕End‘結束程式EndSub7.Stop語句(1)格式Stop(2)功能在對程式調試時,用來暫停程式的執行。(3)說明一般用在程式調試時,其相當於在程式代碼中設置中斷點。(4)例子PrivateSubCommand5_click()‘單擊“退出”按鈕MsgBox“在Stop語句前顯示”Stop‘執行Stop語句會在此暫停,按F5或F8鍵逐句調試MsgBox“在Stop語句後顯示”EndSub第三章VB程式設計語言基礎一VB中的數據與運算二標準函數三三種基本結構(順序,判定,迴圈)一VB中的數據與運算3.1.1數據類型3.1.2變數與常量3.1.3運算符和運算式3.1.4

數組數值數據類型

(1)Integer型和Long型用來表示整數。Integer型數據占2個位元組,Long型數據占4個位元組。除了十進位整型數,常用的還有八進制和十六進制,它們的表示方法為:

Intger型:八進制數值前加&O或&。如&O123

十六進制數值前加&H。如&H123Long型:八進制數值前加&O或&,最後加&。如&O123&

十六進制數值前加&H,最後加&。如&H123&(2)Single型和Double型用來表示浮點數。Single型占4個位元組,Double型占8個位元組。表示一些單精確度型常量和雙精度常量時,可以用以下方法:0.123E5,0.34E-2,0.8D2

3.1.1數據類型(3)Currency型為表示錢款而設置。占8個位元組。小數點左邊最多15位,右邊最多4位。(4)Byte型占1個位元組,表示無符號整數。字元數據類型字元(String)類型存放字元型數據。用雙引號括起來,如“abc”。

注:①”“表示空字元串,長度為0。

②若字串中含有雙引號,則用連續兩個雙引號表示,如”abc””12”。日期數據類型日期型(Date)表示日期和時間,占8個位元組。用“#”括起來,如#2004-5-4#等。邏輯數據類型

邏輯型(Boolean)表示邏輯判斷,占2個位元組。只有True和Fale兩個值。邏輯型數據轉換成整型數據時,True轉換為-1,False轉換為0。其他類型數據轉換成邏輯型數據時,非0數轉換為True,0轉換為False。

對象數據類型

對象型(Object)表示圖形、OLE對象或其他對象,占4個位元組。變體數據類型變體型(Varient)可存放任何類型的數據類型說明符

可在常量或變數的後邊加上類型說明符指明它是哪一種數據類型,常見的類型說明符如下:整型:%長整型:&

單精確度型:!雙精度型:#字串型:$貨幣型:@3.1.2變數與常量命名規則

1.名字由字母、漢字、數字或下劃線組成;2.名字的第一個字元必須是字母或漢字;3.名字的有效長度小於等於255個字元;4.不能使用VB中的關鍵字。5.VB中不區分變數名的大小寫。6.為了增加程式的可讀性,可在變數名前加一個縮寫的首碼來表明該變數的數據類型。

變數變數定義的一般格式如下:

Declare變數名As類型其中,①Declare可以是Dim、Static、Public、ReDim。Dim、Static用於定義局部變數

Dim用於定義窗體和模組級變數

Public用於定義全局變數

ReDim用於重新定義數組

②類型可以是基本數據類型或用戶自定義數據類型③若“As類型”省略,默認為變體數據類型④可在變數名後加類型說明符代替“As類型例如:DimxasInteger,yasSingleDimsasString

注:Dim定義的局部變數是自動變數,過程結束後其值被重新設置;

Static定義的局部變數是景泰變數,過程結束後其值繼續保留。常量

VB中有三種常量:即直接常量、用戶聲明的符號常量和系統提供的常量。(1)直接常量直接常量其常數值直接反映了其類型,也可在常數值後緊跟類型符顯示地說明常數的數據類型。(2)符號常量常量可用由用戶定義的符號常量表示,格式如下:

Const符號常量名[As類型]=運算式[,常量名=運算式]……例如:ConstPI=3.1415926(3)系統提供的常量

除了用戶通過聲明創建符號常量外,VB系統還提供了應用程式和控件定義的常量,這些常量位於對象庫中,在“對象流覽器”中的VisualBasic(VB)、VisualBasicforApplications(VBA)等對象庫中列舉了VisualBasic的常量。

3.1.3運算符和運算式運算符

1.算術運算符加:+減:-乘:*整除:\浮點除:/取模:Mod

負號:-冪運算:^

2.字串運算符“&”和”+“都是將兩個字串拼接起來。但字串連接時最好用”&”,因為“+”還可以作為算術運算符使用

3.關係運算符對兩個運算式的值做比較,若關係成立,則返回True,否則返回False。

等於=大於>大於等於>=小於<小於等於<=不等於<>或><字串匹配Like對象引用比較Is

4.邏輯運算符取反:Not與:And或:Or

異或:Xor等價:Eqv蘊含:Imp

運算式運算式由變數、常量、運算符、函數和圓括號按一定的規則組成。運算式通過運算後有一個結果,運算結果的類型由數據和運算符共同決定。當一個運算式中出現了多種不同類型的運算符時,不同類型的運算符優先順序如下:

算術運算符>字元運算符>關係運算符>邏輯運算符

常用內部函數

VB提供了大量的內部函數(或稱標準函數)供用戶在編程時調用。內部函數按其功能可分成數學函數、轉換函數、字串函數、日期函數和格式輸出函數等。

具體內容參見課本。3.1.4數組1.數組的概念2.靜態數組與動態數組3.數組的清除和重定義4.數組元素的基本操作5.控件數組6.自定義數據類型1.數組的概念一、數組的概念

在實際應用中,經常需要處理同一類型的成批數據。比如,要處理100個學生的會計這門課程的考試成績,如果在程式中定義100個變數來表示這批成績,顯然是很麻煩的。我們可以用VB提供的數組來完成這個功能。可以用c1,c2,…,c100來分別代表每個學生的分數,也就是說,用一批具有相同名字、不同下標的下標變數來表示同一屬性的一組數據,這樣能更清楚的表示它們之間的關係。在VB中,把一組具有相同名字、不同下標的下標變數稱為數組。在電腦中,下標用“()”括起來。比如c(2),其中c為數組名,2是下標。根據數組中下標變數的個數可以分為一維數組、二維數組或多維數組。二、數組的聲明定義數組可以用Dim、Public、Private、Static語句實現。格式(以Dim為例):Dim<數組名>(<第一維說明>[,<第二維說明>]……)[As<類型>]例:Dimc(99)asSingleDims(3,4)asstringDimstu(3,6)Dima(2to100)asstring*5Dimb(2to30,5to40)說明:①數組必須要先定義,後使用②如果不用AS語句指明類型,默認為變體數據類型③一般情況下,下標的下界默認為0,如果希望下標從1開始,可以用OptionBase語句設置,格式為OptionBasen,其中n為下標的下界,只能是0或1④可以根據需要指定數組下標的下界,格式為Dim數組名([下界To]上界[,[下界To]上界]……)⑤在同一個過程中,數組名不能與變數名同名⑥在定義數組時如果指明了類型,那麼數組中的每個元素都是這種類型的;如果沒有指明或定義成了變體數據類型,則其中的每個元素也是變體類型,可以存放各種類型的數據。2.靜態數組與動態數組定義數組後,為了使用數組,必須為數組開闢所需要的記憶體區。根據記憶體區開闢時機的不同,可把數組分為靜態數組和動態數組。通常把需要在編譯時開闢記憶體區的數組叫做靜態數組,把需要在運行時開闢記憶體區的數組叫做動態數組。一、靜態數組靜態數組的數組元素的個數是在數組聲明時確定的,系統運行過程中它的個數不變。前面定義的幾個數組都是靜態數組。我們主要講一下動態數組。

二、動態數組動態數組是在聲明數組時未給出數組的大小(省略括弧中的下標),當要使用它時,隨時用ReDim語句重新指出大小的數組。使用動態數組的優點是可根據用戶需要,有效地利用存儲空間,它是在程式執行到ReDim語句時分配存儲空間。建立動態數組的方法是,使用Dim、Private或Public語句聲明括弧內為空的數組,然後在過程中用ReDim語句指明該數組的大小。形式如下:

ReDim<數組名>(<下標1>[,<下標2>…])[As<類型>]例如:

Dims()asinteger‘定義動態數組s,括弧不能省略

PrivateSubForm_Click()......n=InputBox("輸入n的值")

m=InputBox("輸入m的值")

n=Val(n)m=vla(m)ReDims(n,m)‘重新指明數組的大小......

EndSub

在過程中可多次使用ReDim語句來改變數組的大小,不能改變數組維數,也不能改變數組的類型。每次執行ReDim語句時,當前存儲在數組中的值都會全部丟失。VisualBasic重新將數組元素的值置為Empty(對Variant數組)、置為0(對Numeric數組)、置為零長度字串(對String數組)。如果希望改變數組大小又不丟失數組中的數據,可使用具有Preserve關鍵字的ReDim語句就可做到這點。如:Dimthis()AsStringPrivateSubCommand1_Click()ReDimthis(4)this(2)="microsoft"Printthis(2)ReDimPreservethis(6)Printthis(2)EndSub3.數組的清除和重定義在一個程式中,同一個數組只能定義一次。有時可能需要清除數組的內容或對數組重新定義,這可以用Erase語句來實現。格式如下:

Erase<數組名>[,<數組名>]……說明:①在Erase語句中,只給出要刷新的數組名,不帶括弧和下標②Erase語句用於靜態數組時,用來重新初始化各元素,內容被清空。若是數值數組各元素被置0,字元數組各元素被置為空字元串。③Erase語句用於動態數組時,刪除整個數組的結構並釋放該數組所佔用的記憶體。動態數組經Erase後不再存在。下次引用該動態數組之前,必須用ReDim語句重新定義該數組的維數。4.數組元素的基本操作一、給數組元素賦值1.利用迴圈結構

Fori=1to5A(i)=3Nexti2.利用InputBox()函數輸入

PrivateSubCommand1_Click()Dimb(2,3)Fori=0To2Forj=0To3b(i,j)=InputBox("輸入"&Str(i)&","&Str(j)&"的值")

NextjNexti

Fori=0To2Forj=0To3Printb(i,j);"";NextjPrintNextiEndSub

當給一個較大的數組賦值時,以上方法比較麻煩,可以用Array()函數解決。3.利用Array()函數

PrivateSubForm_Click()Dima,ba=Array(1,2,3,4,5)b=Array("11","22","33")Fori=0ToUBound(a)Printa(i);NextiPrint

Fori=0ToUBound(b)Printb(i);NextiPrintEndSub

說明: ①Array()函數對各元素賦值,聲明的數組是動態數組或連小括弧都省略的數組,並且類型只能是Varient。②數組下界默認為0,可通過OptionBase語句決定,上界由Array()函數括弧內的參數個數決定,也可通過UBound()函數獲得。③Array函數只適用於一維數組。二、數組元素的輸出可以通過Print語句對數組輸出對一維數組,用單重迴圈就能實現,對二維數組,要用二重迴圈實現。三、數組元素的複製1.單個數組元素可以像簡單變數一樣從一個數組複製到另一個數組。如:Dimb(4),a(6)……b(2)=a(3)2.要複製整個數組,要使用For迴圈語句。PrivateSubCommand1_Click()Dima(),b()a=Array(1,2,3,4,5)ReDimb(UBound(a))Fori=0ToUBound(a)b(i)=a(i)NextiFori=0ToUBound(a)Printb(i);NextiEndSub3.要複製整個數組,也可以使用一條簡單的賦值語句即可。如:

Dima(4)asinteger,b()asintegerA(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14B=a使用這種方法賦值時,必須要注意:①賦值號兩邊的數據類型必須一致②如果賦值號左邊的是一個大小固定的數組,則數組賦值出錯③賦值號左邊的必須是一個動態數組,賦值時系統自動將動態數組ReDim成與右邊同樣大小的數組四、ForEach…Next語句與For…Next語句類似,兩者都是用來執行指定重複次數的語句。但ForEach…Next語句是專門用於運算元組的,它的格式如下:

ForEach<成員>In<數組名>[<循環體>][ExitFor]Next[<成員>]說明:①格式中的“成員”必須是一個變體變數,是為迴圈提供的,代表的是數組中的每個元素。②〈數組名〉沒有括弧和上下界用ForEach…Next語句可以對數組元素進行處理,它所重複執行的次數由數組中元素的個數確定,數組中有多少個元素,就自動重複執行多少次。例:OptionBase1PrivateSubCommand1_click()Dimabc(10)AsIntegerFori=1To10abc(i)=Int(Rnd*100)NextiPrint"使用普通迴圈輸出:"

Fori=1To10Printabc(i);NextiPrintPrint"使用ForEach…Next輸出:"

ForEachxInabcPrintx;NextEndSub5.自定義數據類型自定義數據類型由若干個標準數據類型組成,又稱記錄類型。通過Type語句實現。格式:Type自定義類型名元素名[(下標)]As類型名……[元素名[(下標)]As類型名]EndType如:TypeStudentNoAsIntegerNameAsString*20SexAsString*1Mark(1To4)AsSingleTotalAsSingleEndType說明:①自定義數據類型一般在標準模組(.bas)中定義,默認是Public。若在窗體模組中定義,必須是Private。②自定義數據類型中的元素類型可以是字串,但應是定長字串。定義好了類型,就可在變數的聲明時使用該類型,定義的方法和標準類型是一樣的。比如:Dimstuasstudent表示自定義類型變數中元素的格式為:變數名.元素名,如stu.no,等。可給變數stu賦值:標準函數2.1數學函數2.2轉換函數2.3字串函數2.4日期與事間函數1.數學函數Sin(N):返回引數N的正玄函數值,如:sin(0)=0,N為弧度。Cos(N):返回引數N的餘玄函數值,如:cos(0)=1,N為弧度。Tan(N):返回引數N的正切函數值,如:tan(0)=0,N為弧度。Atn(N):返回引數N的反正切值,如:atn(0)=0,函數值為弧度。Sgn(N):返回引數N的符號。N<0,返回-1;N=0,返回0;N》0,返回1。如:Sgn(35)=1,Sgn(0)=0,Sgn(-5.34)=-1Abs(N):返回引數N的絕對值,Abs(-345)=345,Abs(345)=345。Sqr(N):返回引數N的平方根,N>=0,如:Sqr(81)=9。Exp(N):返回e的N次冪值,n>=0。如:Exp(3)=20.086。Log(N):返回N的自然對數,N>0,如:Log(10)=2.3Int(N):返回不大於N的最大整數,如:Int(3.6)=3。Cint(N):四捨五入整數。Cint(3.6)=4。Rnd(N):返回0~1之間的隨機小數。注意:三角函數的引數以弧度表示。

2.轉換函數Fix(n):返回n的整數部分,截取小數部分;如:Fix(3.4)=3。Asc(c):返回字串C首字元的ASCII碼值,如:Asc(”A”)=65。Chr(n):返回ASCII碼值為n的字元,Chr(65)=”65”。Val(c):把數字組成的字串型數據轉換稱數值型。Val(”456”)=456。Str(n):把數值n轉換成字元型,Str(357)=”357”。Lcase(c):把字串c中大寫字母轉換為小寫字母。Lcase(”A”)=”a”。Ucase(c):把字串c中小寫字母轉換為大寫字母。Ucase(”a”)=”A”。3.字串函數Trim(c):去掉字串c兩端的空格,Trim(”ab”)=”ab”。Left(c,n):截取C最左邊的n個字元,Left(”command,3”)=”com”。Right(c,n):截取c最右邊的n個字元,Right(”command,3”)=”and”.Mid(C,m,n):截取c中第m個字元開始的n個字元。Mid(”command”,3,2)=”mm”。Len(c):返回c包含的字元數,漢字空格都算一個字元。Len(”中”)=1。Ucase(c):將c中的小寫字母轉換成大寫字母。Ucase(”Who”)=”WHO”.Lcase(c):將c中的大寫字母轉換成小寫字母。Lcase(”Who”)=”who”。4.日期與時間函數Time[$][()]:返回系統當前時間;Date[$][()]:返回系統當前日期;Now[()]:返回系統當前日期和時間;Day(c/n):返回數據中當月第幾天;Month(c/n):返回數據中當年第幾月;WeekDay(c/n):返回數據當天是星期幾。三基本控制結構3.1順序結構3.2選擇結構3.3迴圈結構3.1順序結構順序結構就是各語句按出現的先後次序執行。主要是由一些賦值語句、輸入/輸出語句等組成。賦值語句

格式:變數名=運算式

在VB中,既可以給一個變數賦值,也可以給對象的某一個屬性賦值。InputBox()函數

格式:InputBox(提示[,標題][,默認][,x座標位置][,y座標位置])功能:產生一個對話框,讓用戶從鍵盤輸入內容,當用戶單擊“確定”按鈕或按回車鍵時,函數返回輸入的值。

PrivateSubCommand1_Click()r=InputBox("請輸入姓名","教師登記表","張三",3000,4000)

PrintrEndSub

其中:“提示”:字串運算式,在對話框中作為資訊顯示。“標題”:字串運算式,在對話框的標題區顯示。“默認”:字串運算式,顯示輸入框裏的默認資訊。“x座標位置”、“y座標位置”:整型運算式,座標確定對話框左上角在螢幕上的位置,螢幕左上角為座標原點,單位為twip。

在這五個參數中,只有“提示”是必選的。注:函數的返回值為字串類型,所以如果要對返回值進行算術運算,必須要轉換成數值型的。

例如:PrivateSubCommand1_Click()r=InputBox("請輸入第一個數")

s=InputBox("請輸入第二個數")

r=Val(r):s=Val(s)x=r+sPrintxEndSubMsgBox()函數格式:變數=MsgBox(提示[,按鈕][,標題])功能:打開一個資訊框,等待用戶選擇一個按鈕。例如:PrivateSubCommand1_Click()r=MsgBox("輸入密碼",51,"密碼錯誤")

PrintrEndSub

“提示”和“標題”:意義與InputBox函數中對應的參數相同。“按鈕”:整型運算式,用來控制在資訊框內顯示的按鈕、圖示的種類和數量,該參數的值由4類數值相加產生,這4類數值或符號常量分別表示按鈕類型、顯示圖示的種類、活動按鈕(默認按鈕)的位置及強制返回模式。按鈕設置值及意義見下圖。“按鈕”設置值及意義

4類分組系統內部常量按鈕值描述按鈕類型VbOkOnlyVbOkCancelvbAboutRetryIgnoreVbYesNoCancelVbYesNoVbRetryCancel012345只顯示“確定”按鈕顯示“確定”、“取消”按鈕顯示“終止”、“重試”、“忽略”按鈕顯示“是”、“否”、“取消”按鈕顯示“是”、“否”按鈕顯示“重試”、“取消”按鈕圖示類型VbCriticalVbQuestionVbExclamationVbInformation16324864關鍵資訊圖示紅色STOP標誌詢問資訊圖示?警告資訊圖示!資訊圖示i默認按鈕VbDefaultButtonlVbDefaultButton2VbDefaultButton30256512第1個按鈕為默認第2個按鈕為默認第3個按鈕為默認模式VbApplicationModuleVbSystemModule04096應用模式系統模式MsgBox函數返回值是一個整數值,這個返回值與所選的按鈕有關,所選按鈕返回數值的意義見下圖。被單擊的按鈕返回值系統內部常量確定1VbOk取消2VbCancel終止3VbAbort重試4VbRetry忽略5VbIgnore是6VbYes否7vbNo再看一個有關返回值的例子:編寫一個程式,用MsgBox函數判斷是否繼續執行。PrivateSubForm_Click()DimMsg$,Title$Dimm%Msg$="此數據是否正確"

Title$="數據驗證對話框"

m=MsgBox(Msg$,35,Title$)‘35=3+32+0+0Ifm=6Then‘Print"正確";m*mElseIfm=7Orm=2ThenPrint"數據錯誤,請重新輸入"

EndIfEndSub對於一些較簡單的資訊提示,我們可以使用MsgBox語句,格式如下:

MsgBox提示[,按鈕][,標題]它與MsgBox函數的主要區別是函數有返回值,而語句沒有返回值3.2選擇結構選擇結構,就是對條件進行判斷,根據判斷結果,選擇執行不同的分支。

VB中提供了多種形式的條件語句來實現,我們主要介紹If條件語句和SelectCase語句If條件語句

If條件語句有兩種格式:單行結構和塊結構1.單行結構格式:

If<條件>Then<語句塊1>[Else<語句塊2>]如果Then或Else後面有多條語句,那麼各語句之間用“:”隔開。2.塊結構格式:

If<條件>Then<語句塊l>[Else<語句塊2>]

EndIfThen和Else後面不能有語句,而且最後不要忘了寫上EndIf。這兩種結構都比較簡單,就不再舉具體的例子了。在實際應用中,我們還經常用的If語句的嵌套,即一個If語句裏又包含一個If語句。舉一個簡單的例子:某商場為了促銷,採用購物打折的優惠辦法,每位顧客一次購物(1)1000元以上,按九五折優惠(2)2000元以上,按九折優惠(3)3000元以上,按八五折優惠(4)5000元以上,按八折優惠編寫程式,輸入購物款數,計算並輸出優惠價。方法一:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=val(Text1.Text)Ifx<1000Theny=xElseIfx<2000Theny=0.95*xElseIfx<3000Theny=0.9*xElseIfx<5000Theny=0.85*xElsey=0.8*xEndIfEndIf

EndIfEndIfText2.Text=Str(y)EndSub上面的這個程式出現多次If語句嵌套,程式長,不便閱讀。為此VB提供了帶ElseIf的塊If語句,使程式簡化易寫。其格式如下:If<條件1>Then<語句塊l>Elself<條件2>Then<語句塊2>……[Else<語句塊n+1>]EndIf上面的例子可以改寫成這種格式的,代碼如下:方法二:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<1000Theny=xElseIfx<2000Theny=0.95*xElseIfx<3000Theny=0.9*xElseIfx<5000Theny=0.85*xElsey=0.8*xEndIfText2.Text=Str(y)EndSubSelectCase語句又稱情況語句,是多分支結構的另一種形式。格式:

SelectCase變數或運算式

Case運算式列表1<語句塊1>

Case運算式列表2<語句塊2>…[CaseElse<語句塊n+1>]EndSelect

格式中的“運算式列表”可為下列形式之一:(1)運算式[,運算式]……

eg:Case2,4,6,8(2)運算式To運算式

eg:Case1to5(3)Is關係運算運算式

eg:CaseIs<10情況語句執行時先對“測試運算式”求值,然後測試該值與哪一個Case子句中的“運算式列表”匹配,如果找到了,就執行與該Case語句有關的語句塊,執行完後轉移到EndSelect後面的語句;如果沒有找到,則執行與CaseElse子句有關的語句塊,然後在轉移到EndSelect後面的語句。剛才那個購物打折的例子同樣可以用情況語句實現,代碼如下:方法三:PrivateSubForm_Click()DimxAsSingle,yAsSinglex=InputBox("請輸入購物款數")

x=Val(x)SelectCasexCaseIs<1000y=xCaseIs<2000y=0.95*xCaseIs<3000y=0.9*x

CaseIs<5000y=0.85*xCaseElsey=0.8*xEndSelectPrint"購物款數:";x,"優惠價:";yEndSub同一個問題,解決的方法可能有多種,我們最好選擇自己比較熟悉而又簡單的來實現3.3迴圈結構在實際應用中,經常遇到一些操作並不複雜,但需要反復多次處理的問題,比如人口增長統計、計算存款利息等,這些問題如果用順序結構來處理十分麻煩,有時甚至難以實現,而使用VB提供的迴圈語句可以輕鬆實現。迴圈結構就是在指定的條件下多次重複執行一組語句。VB提供了兩種不同風格的迴圈結構:計數迴圈(For-Next迴圈)當迴圈(While迴圈)

Do迴圈(Do-Loop迴圈)For迴圈語句

格式:For迴圈變數=初值To終值[step步長]<語句塊>[ExitFor]循環體<語句塊>Next迴圈變數

說明:①迴圈變數也稱“迴圈計算器”或“迴圈控制變數”,為數值型。②初值與終值均為數值運算式。③步長是一個數值運算式,為迴圈變數的增量,可正可負;如果省略,默認為1。④ExitFor可用於提前退出for迴圈。⑤Next後面的“迴圈變數”與For後面的“迴圈變數“必須相同。執行過程:①把“初值”賦給“迴圈變數”②檢查“迴圈變數”是否超過終值,若沒有則執行循環體,若超出則結束迴圈,執行Next後面的語句③迴圈變數加步長,轉②,繼續迴圈。由上可看出For-Next迴圈的迴圈次數由初值、終值和步長三個因素決定,計算公式為:迴圈次數=Int(終值-初值)/步長+1下麵舉一個例子:求n!(n為自然數)PrivateSubForm_Click()DimnAsIntegern=InputBox("輸入n的值:")

k=1Fori=1Tonk=k*iNextiPrintn;"!=";kEndSub再看一個有關步長和ExitFor語句的例子。PrivateSubForm_Click()Fori=1To100s=s+iIfs=4851ThenExitForEndIfNextiPrintiEndSub當迴圈(While迴圈)格式:

While條件[語句塊]

Wend

當條件為True時,執行循環體。

例:PrivateSubForm_click()DimcharAsStringConstch$="?"Counter=0msg$="輸入一個字母"

char=InputBox$(msg$)Whilechar<>chCounter=Counter+1char=InputBox$(msg$)WendPrint"輸入字母的個數為:";CounterEndSub

Do…Loop迴圈語句Do迴圈有兩種格式:格式一:Do[{While|Until}<條件>]<語句塊>[ExitDo]<語句塊>Loop說明:①格式一為先判斷後執行,循環體有可能一次也不執行。格式二為先執行後判斷,至少執行一次循環體。②While用於指明條件為

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论