




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualBasic程式設(shè)計(jì)概述1.1Vb功能特點(diǎn)1.2可視化編程的概念1.3面向?qū)ο蟮挠嘘P(guān)概念1.4Vb集成開(kāi)發(fā)環(huán)境1.5Vb程式設(shè)計(jì)的一般步驟第一節(jié)Vb功能特點(diǎn)
面向?qū)ο蟮目梢暬某淌皆O(shè)計(jì)方法事件驅(qū)動(dòng)的程式設(shè)計(jì)機(jī)制簡(jiǎn)單易學(xué)的程式設(shè)計(jì)語(yǔ)言互動(dòng)式的集成開(kāi)發(fā)環(huán)境第二節(jié)可視化編程的概念
傳統(tǒng)的程式設(shè)計(jì)方法針對(duì)用戶介面設(shè)計(jì)程式代碼可是化編程的優(yōu)點(diǎn)第三節(jié)面向?qū)ο蟮挠嘘P(guān)概念對(duì)象的概念是表示現(xiàn)實(shí)世界中某個(gè)具體的事物,或者對(duì)象是具有特殊屬性(數(shù)據(jù))和行為方式(方法)的實(shí)體,建立一個(gè)對(duì)象後,其操作通過(guò)與該對(duì)象有關(guān)的屬性、事件和方法來(lái)描述。對(duì)象的建立和編輯
建立:①單擊工具箱裏相應(yīng)對(duì)象的圖示,然後在窗體上拖動(dòng)②雙擊工具箱裏相應(yīng)對(duì)象的圖示
選定:?jiǎn)螕暨x定一個(gè);Ctrl+單擊選定多個(gè)不連續(xù);Shift+單擊選定多個(gè)連續(xù)刪除:選定按Del鍵對(duì)象的屬性、事件和方法屬性:一個(gè)對(duì)象的特徵??稍谠O(shè)計(jì)階段利用屬性窗口直接設(shè)置對(duì)象的屬性,也可在程式代碼中利用語(yǔ)句實(shí)現(xiàn),格式:對(duì)象名.屬性名=屬性值
事件:由VB預(yù)先設(shè)置好的、能被對(duì)象識(shí)別的動(dòng)作。如:Click(單擊)、Change(改變)等。
事件過(guò)程:對(duì)象的事件發(fā)生後,應(yīng)用程式處理這個(gè)事件所執(zhí)行的一段代碼。一般格式如下:
PrivateSub對(duì)象名_事件名([參數(shù)列表])……
EndSub方法系統(tǒng)提供,用戶可以直接調(diào)用。一般格式如下:
[對(duì)象.]方法名[參數(shù)列表]第四節(jié)Vb集成開(kāi)發(fā)環(huán)境VB6.0的安裝添加或刪除VB6.0組件VB6.0的啟動(dòng)方法VB6.0集成開(kāi)發(fā)環(huán)境1)主窗口 2)窗體窗口3)屬性窗口 4)工程資源管理器窗口5)代碼窗口 6)窗體佈局窗口7)立即窗口 8)工具箱窗口第五節(jié)Vb程式設(shè)計(jì)的一般步驟VB應(yīng)用程式開(kāi)發(fā)的全過(guò)程(1)介面設(shè)計(jì)(2)編寫(xiě)代碼(3)保存和運(yùn)行(4)編譯與打包(5)安裝運(yùn)行VB應(yīng)用程式開(kāi)發(fā)的主要步驟開(kāi)發(fā)一個(gè)VB應(yīng)用程式一般有以下三個(gè)主要步驟:(1)設(shè)計(jì)應(yīng)用程式介面(2)設(shè)置對(duì)象屬性(3)編寫(xiě)程式代碼第二章窗體與基本控件
涉及內(nèi)容:2.1窗體2.2基本控件以及控件的格式化2.3基本控件的格式化2.4簡(jiǎn)單語(yǔ)句一窗體1.窗體常用屬性
Name對(duì)象的名稱指定窗體的名稱,在程式代碼中用這個(gè)名稱引用該窗體。第一個(gè)窗體的名稱缺省值為form1,通常要給name屬性設(shè)置一個(gè)有實(shí)際意義的名稱,便於識(shí)別。
Caption對(duì)象的標(biāo)題設(shè)置窗體標(biāo)題欄顯示的文本。
Height對(duì)象的高度Width對(duì)象的寬度設(shè)置窗體的高度和寬度。單位為Twip。1Twip=1/20點(diǎn)=1/1440英寸=1/567cmEnabled對(duì)象的啟動(dòng)或禁止用來(lái)設(shè)置窗體是否回應(yīng)滑鼠或鍵盤事件。缺省時(shí)為True,窗體能夠?qū)τ脩舢a(chǎn)生的事件作出反映。Visible對(duì)象的可見(jiàn)性設(shè)置窗體是否顯示。True(窗體可見(jiàn)),F(xiàn)alse(運(yùn)行時(shí),窗體及其上面的對(duì)象都將被隱藏)Top對(duì)象的頂邊距離Left對(duì)象的左邊距離Backcolor設(shè)置窗體的背景顏色;Forecolor設(shè)置窗體的前景顏色。Font設(shè)置窗體上字體的樣式,大小,字形等。Picture設(shè)置在窗體中顯示的圖片。
注意:要在程式中設(shè)置該屬性的值,需要使用LoadPicture函數(shù)。WindowStare屬性設(shè)置窗體運(yùn)行時(shí)的大小狀態(tài)。有三個(gè)可選值:0-Normal窗體大小由Height和Width屬性決定,此值為缺省值;1-Minimized窗體最小化成圖示;2-Maximized窗體最大化,充滿整個(gè)螢?zāi)弧?.窗體事件和方法事件Click(單擊)事件:?jiǎn)螕艋笞箧I時(shí)觸發(fā)
DblClick(雙擊)事件:雙擊窗體時(shí)觸發(fā)
Load(裝入)事件:窗體被裝入工作區(qū)時(shí)觸發(fā)方法
格式:[對(duì)象名.]Print[運(yùn)算式列表][;|,]功能:在對(duì)象上輸出資訊例如:Form1.Print“VB”;”程式設(shè)計(jì)”
Cls
格式:[對(duì)象名.]Cls
功能:清除運(yùn)行時(shí)用Print方法在窗體或圖片框種顯示的文本或圖形例如:Picture1.Cls
Move
格式:[對(duì)象名.]Move左邊距離[,上邊距離[,寬度[,高度]]]功能:移動(dòng)窗體或控件,並可改變其大小例如:Text1.Move800,800,4000,3000
相關(guān)例子下載
二基本控件以及控件的格式化1.命令按鈕常用屬性:Enabled屬性:描述控件是否可用。
false:不可獲得焦點(diǎn)
true:可以獲得焦點(diǎn),能觸發(fā)滑鼠事件Visable屬性:描述控件是否可見(jiàn)。
false:不可見(jiàn),即隱藏(命令按鈕)
true:可見(jiàn)Default屬性和Cancel屬性
default屬性為true,則該按鈕為默認(rèn)按鈕,回車操作相當(dāng)於單擊此按鈕
cancel屬性為true,則該按鈕為默認(rèn)的取消按鈕,按ese相當(dāng)於單擊此按鈕Style屬性用來(lái)設(shè)置命令按鈕的顯示類型。其屬性可設(shè)置為:0-Standard:標(biāo)準(zhǔn)的,命令按鈕上不能顯示圖形和背景色,此為缺省值。1-Graphical:圖形的,可顯示圖形和背景色。Picture屬性設(shè)置命令按鈕中要顯示的圖形。只有將Style屬性設(shè)置為1,圖形才能在按鈕上顯示。ToolTipText設(shè)置滑鼠在命令按鈕上停留的提示文本資訊。事件:
命令按鈕常用事件是Click(單擊)事件。即程式運(yùn)行後,單擊滑鼠按鈕時(shí)所觸發(fā)的事件。2.標(biāo)籤(Label).作用:固定位置顯示文本,僅用於顯示
現(xiàn)有如下程式:用於顯示輸入的姓名、性別、年齡等內(nèi)容的清空,點(diǎn)擊顯示按鈕則在最下麵的文本框中顯示輸入的內(nèi)容,點(diǎn)擊退出按鈕退出程式)
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
標(biāo)籤常用屬性
alignment:文本對(duì)齊方式0:代表左對(duì)齊1:右對(duì)齊2:居中
name:標(biāo)籤的名字,用來(lái)標(biāo)識(shí)一個(gè)標(biāo)籤
caption:標(biāo)籤中顯示出來(lái)的文字,注意與name屬性的區(qū)別。
forecolor:標(biāo)籤的前景色,即文字的顏色
backcolor:標(biāo)籤的背景色
backstyle:標(biāo)籤的背景模式
0:不覆蓋原背景(透明)1:覆蓋原背景
top:標(biāo)籤左頂點(diǎn)的Y座標(biāo)
left:標(biāo)籤的左頂點(diǎn)的X座標(biāo)
width:標(biāo)籤的寬度
height:標(biāo)籤的高度
font:標(biāo)籤的字體
enabled:標(biāo)籤是否可用。值為true或falsevisible:標(biāo)籤是否可見(jiàn)。值為true或false
常用事件a.change事件:當(dāng)標(biāo)籤的內(nèi)容更改時(shí)觸發(fā),即在程式中更改標(biāo)籤的內(nèi)容時(shí)。
b.click事件:?jiǎn)螕羰录c(diǎn)擊標(biāo)籤觸發(fā)該事件
c.dbclick事件:雙擊事件,雙擊標(biāo)籤時(shí)觸發(fā)該事件標(biāo)籤的其他用法標(biāo)籤除了直接在設(shè)計(jì)階段設(shè)置之外,也常常在運(yùn)行階段用程式的方式來(lái)顯示時(shí)間。time$是一個(gè)與時(shí)間有關(guān)的函數(shù),由於它的返回值是字串,因此可以把它賦值給標(biāo)籤的標(biāo)題,這樣就可以用標(biāo)籤來(lái)顯示時(shí)間,例如:label1.caption=time$
當(dāng)要在標(biāo)籤中同時(shí)顯示2行以上的字串,就一定要靠程式,在字串之間加上chr$(13)+chr$(10)控制碼。例如:label1.caption=time$+chr$(13)+chr$(10)+date$3.文本框用於輸入、編輯文本或用於輸出、顯示文本,文本框最多可容納的字元為2048個(gè)。但如果Multline=True,則輸入的字元數(shù)可達(dá)32K。
屬性如下:.multiline=true‘可輸入、顯示多行文本
.scrollbars=3-both‘加滾動(dòng)條.selstart=數(shù)字‘設(shè)置所選文本的起始點(diǎn).sellength=選定長(zhǎng)度
(文本框)
方法.seltext例程:
OptionExplicitPrivateaa,compare:privateaddressAsIntegerPrivateSubCommand1_Click()aa=InputBox("請(qǐng)輸入你要查找的內(nèi)容","查找")
address=InStr(1,Text1.Text,aa,vbTextCompare)
'前者為在哪個(gè)串中搜索,在串1中搜索串2
Ifaddress>0Then
Text1.SetFocus:Text1.SelStart=address–1:Text1.SelLength=Len(aa)
Else
MsgBox"沒(méi)有相關(guān)內(nèi)容"
EndIfEndSubPrivateSubForm_Load()Text1.Text=“hfsdfonrklesnflkshdncvoisnhdlfmnsdlfjksdjfsdflksdjflksjdfl"_&"skldflsdjflsjflskdjflksdjcvosdjflskdjflksdjvlkhsndfksdlfjlksadjflk"EndSub事件chang‘當(dāng)文本框中內(nèi)容發(fā)生變化時(shí)觸發(fā)該事件
keydown,keyup‘按鍵(在顯示出按鍵內(nèi)容的同時(shí))與提起按鍵時(shí)觸發(fā)事件參數(shù):[indexasinteger,]keycodeasintegert,shiftasinteger)a.index:當(dāng)控件是控件數(shù)組中的一個(gè)元素時(shí),index代表在數(shù)組是索引值,即下標(biāo)
b.keycode:鍵盤掃描碼?!?3對(duì)應(yīng)回車
c.shift:代表shift,ctrl,alt鍵的狀態(tài);是一個(gè)3位的二進(jìn)位位域。(111)=>(alt,ctrl,shift)
故shift=6代表:110=>同時(shí)按下alt,ctrl兩鍵以上可判定是否只按下某鍵;但是如果需要瞭解是否按下了某鍵,則需要與特定數(shù)進(jìn)行遮罩Keypress事件:用於截獲在文本框/組合框中輸入的按鍵;Sub控件名_keypress([indexasinteger,]keyasciiasinteger)參數(shù):([indexasinteger,]keyasciiasinteger)a.index:當(dāng)控件是控件數(shù)組中的一個(gè)元素時(shí),index代表在數(shù)組是索引值,即下b.keyascii:返回標(biāo)準(zhǔn)的ascii鍵碼可以用chr(keyascii)將ascii轉(zhuǎn)化為相應(yīng)的字元;或用=asc(char)將字元轉(zhuǎn)為ascii碼.(用於判定輸入是否為某字元)注意:keypress事件不是指出所按字元在鍵盤上的物理位置,而是傳送一個(gè)字符,故它可以判別大小寫(xiě)。相反,keyup/keydown能識(shí)別的是所按字元在鍵盤上的物理位置,則大小寫(xiě)字元的keycode碼是一樣的。(若要在keyup/keydown中判別字元的大小寫(xiě),需判定是否為shift+該鍵)
例程:檢驗(yàn)輸入(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“請(qǐng)輸入數(shù)字“:KeyAscii=0
EndIfEndSub
PrivateSubText_month_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請(qǐng)輸入數(shù)字“KeyAscii=0
EndIfEndSubPrivateSubText_passwd_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請(qǐng)輸入數(shù)字“:KeyAscii=0
EndIfEndSubPrivateSubText_year_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請(qǐng)輸入數(shù)字“:KeyAscii=0
EndIf‘8代表退格符EndSubPrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=13ThenMsgBox“按下了回車符"
If(ShiftAnd2)>1ThenMsgBox“你按下了ctrl鍵"
EndSub三基本控件的格式化1.控件的添加/刪除A:窗體中添加控件(1)在工具箱中單擊所要添加的控件,然後將滑鼠移動(dòng)到窗體中,此時(shí)滑鼠指針變?yōu)槭郑谛枰尤肟丶牡胤桨醋』笞箧I拖動(dòng)成想要的尺寸,在釋放滑鼠左鍵,就可以看到控件被繪製到窗體上。按住“Ctrl”鍵,可以繪製多個(gè)相同控件。(2)單擊將要?jiǎng)h除的控件,再按“Del”即可,誤刪可以使用“Ctrl+Z”還原。2.調(diào)整控件的大小與位置
調(diào)整大小方法:用滑鼠單擊需要調(diào)整的對(duì)象,再控件四周出現(xiàn)8個(gè)藍(lán)色矩形小方框“尺寸柄”,通過(guò)它可以調(diào)整。調(diào)整位置的方法:A:滑鼠拖動(dòng)對(duì)象B:使用Ctrl+方向鍵C:Ctrl+Shift鍵,再用滑鼠移動(dòng)可以微調(diào)控件位置。其中A:和B:兩種方法都只能以網(wǎng)格為單位,也便於多個(gè)控件對(duì)齊。3.窗體與控件佈局調(diào)整控件佈局調(diào)整:進(jìn)行調(diào)整之前都必須先選定需要調(diào)整的控件。A:通過(guò)“格式”菜單進(jìn)行調(diào)整;
B:通過(guò)“窗體編輯器”工具欄。窗體佈局調(diào)整是指決定程式運(yùn)行時(shí),窗體在螢?zāi)簧铣霈F(xiàn)的位置。利用“窗體佈局窗口”,可以進(jìn)行調(diào)整。具體步驟為:視圖窗體佈局窗口當(dāng)重新調(diào)整“窗體佈局窗口”時(shí),每個(gè)窗體都將相當(dāng)於設(shè)計(jì)窗口的大小進(jìn)行調(diào)整??蛻魠^(qū)域的左上角代表桌面座標(biāo)(0,0)點(diǎn)。
多個(gè)控件的選定方法:A:使用Shift鍵配合滑鼠的單擊;B:使用滑鼠在窗體上拖出一方框,在框內(nèi)的控件將被全部選中。四簡(jiǎn)單語(yǔ)句1.Print方法Print是輸出數(shù)據(jù)的一種重要的方法。(1)格式[對(duì)象名.]Print[運(yùn)算式列表](2)功能在對(duì)象上輸出運(yùn)算式的值。(3)說(shuō)明A:對(duì)象名可以是Form(窗體),Debug(立即窗口),Print(印表機(jī))等。例如:Print”12*2=“;12*2‘在當(dāng)前窗口上輸出12*2=24Picture1.print“VB”‘在圖片框Picture1上輸出VB;Printer.print“OK”‘在印表機(jī)上輸出OKB:運(yùn)算式列表是一個(gè)或多個(gè)運(yùn)算式,若省略此項(xiàng),則輸出一空行。輸出數(shù)據(jù)時(shí),數(shù)值數(shù)據(jù)的前面有一個(gè)符號(hào)位,後面有一個(gè)空格;而字串前後都沒(méi)有空格。相關(guān)例子:例1.Print3;4‘用“;”分隔的各項(xiàng),按緊湊格式顯示;
例2.Print‘輸出空行例3.Print“1234567”;Spc(2);”abcdef”‘輸出數(shù)據(jù)時(shí),字串前後都沒(méi)有空格。例4.PrintTab(2);”**”;Tab(6);”**”;Tab(10);”**”;Tab(14);”**”‘Spc(2)使字串間留有兩個(gè)空格,Tab函數(shù),使第2,6,10,14列定位輸出“**”.2.InputBox輸入框此函數(shù)可以生成輸入框來(lái)接受用戶的輸入。(1)格式InputBox(提示[,標(biāo)題][,缺省值][,x座標(biāo)值][,y座標(biāo)位置])(2)功能生成一個(gè)能接受用戶輸入的對(duì)話框,並返回用戶在對(duì)話框中輸入的資訊。(3)例子說(shuō)明A$=InputBox(“第一項(xiàng)為提示”&vbNewLine$“用vbNewLine實(shí)現(xiàn)換行”,“第二項(xiàng)為標(biāo)題”,“第三項(xiàng)為缺省值”,200,200)第一項(xiàng)“提示”;第二項(xiàng)“標(biāo)題”;第三項(xiàng)“缺省值”;第四項(xiàng)“x座標(biāo)位置”;第五項(xiàng)“y座標(biāo)位置”。3.MsgBox消息框此函數(shù)可生成用戶提示資訊和選擇互動(dòng)式對(duì)話框。(1)格式MsgBox(提示[,按鈕數(shù)值][,標(biāo)題])(2)功能MsgBox函數(shù)在對(duì)話框中顯示資訊,在用戶單擊對(duì)話框上的按鈕時(shí),可返回一個(gè)整數(shù)以標(biāo)明用戶單擊的是那個(gè)按鈕。(3)說(shuō)明第一項(xiàng)“提示”:指定在消息框中出現(xiàn)的文本;第二項(xiàng)“按鈕數(shù)值”:整數(shù)運(yùn)算式,指定消息框中出現(xiàn)的按鈕和圖示;第三項(xiàng)“標(biāo)題”:指定消息框的標(biāo)題。4.Cls語(yǔ)句(1)格式[對(duì)象名.]Cls(2)功能清除窗體(Form)或圖片框(PictureBox)中由Print方法顯示的文本和圖形方法所生成的圖形,並把輸出位置移動(dòng)到對(duì)象的左上角。(3)說(shuō)明格式中的對(duì)象可以是窗體或圖片框,如果省略對(duì)象名,則清除當(dāng)前當(dāng)前窗體的顯示內(nèi)容。用Cls語(yǔ)句清楚後的區(qū)域以背景色填充,但Picture屬性的背景位圖和放置的控件不受影響。(4)舉例PrivateSubForm1_Click()ClsEndSub5.Rem語(yǔ)句(1)格式‘|Rem<注釋內(nèi)容>(2)功能實(shí)現(xiàn)在代碼中加入用來(lái)解釋或說(shuō)明的附加文本。(3)說(shuō)明為提高程式的可讀性,通常在程式的適當(dāng)位置加上必要的注釋。注釋語(yǔ)句是非執(zhí)行語(yǔ)句,不參加編譯,對(duì)程式運(yùn)行無(wú)影響。(4)例子Mystr1=“Hello”‘這也是一條注釋,無(wú)需使用冒號(hào)。6.End語(yǔ)句(1)格式End(2)功能用來(lái)結(jié)束程式的執(zhí)行,並關(guān)閉已打開(kāi)的檔。(3)說(shuō)明它提供了一種關(guān)閉程式的方法。執(zhí)行它,會(huì)卸載程式中所有窗體,釋放所有記憶體。(4)例子PrivateSubCommand4_click()‘單擊“退出”按鈕End‘結(jié)束程式EndSub7.Stop語(yǔ)句(1)格式Stop(2)功能在對(duì)程式調(diào)試時(shí),用來(lái)暫停程式的執(zhí)行。(3)說(shuō)明一般用在程式調(diào)試時(shí),其相當(dāng)於在程式代碼中設(shè)置中斷點(diǎn)。(4)例子PrivateSubCommand5_click()‘單擊“退出”按鈕MsgBox“在Stop語(yǔ)句前顯示”Stop‘執(zhí)行Stop語(yǔ)句會(huì)在此暫停,按F5或F8鍵逐句調(diào)試MsgBox“在Stop語(yǔ)句後顯示”EndSub第三章VB程式設(shè)計(jì)語(yǔ)言基礎(chǔ)一VB中的數(shù)據(jù)與運(yùn)算二標(biāo)準(zhǔn)函數(shù)三三種基本結(jié)構(gòu)(順序,判定,迴圈)一VB中的數(shù)據(jù)與運(yùn)算3.1.1數(shù)據(jù)類型3.1.2變數(shù)與常量3.1.3運(yùn)算符和運(yùn)算式3.1.4
數(shù)組數(shù)值數(shù)據(jù)類型
(1)Integer型和Long型用來(lái)表示整數(shù)。Integer型數(shù)據(jù)占2個(gè)位元組,Long型數(shù)據(jù)占4個(gè)位元組。除了十進(jìn)位整型數(shù),常用的還有八進(jìn)制和十六進(jìn)制,它們的表示方法為:
Intger型:八進(jìn)制數(shù)值前加&O或&。如&O123
十六進(jìn)制數(shù)值前加&H。如&H123Long型:八進(jìn)制數(shù)值前加&O或&,最後加&。如&O123&
十六進(jìn)制數(shù)值前加&H,最後加&。如&H123&(2)Single型和Double型用來(lái)表示浮點(diǎn)數(shù)。Single型占4個(gè)位元組,Double型占8個(gè)位元組。表示一些單精確度型常量和雙精度常量時(shí),可以用以下方法:0.123E5,0.34E-2,0.8D2
3.1.1數(shù)據(jù)類型(3)Currency型為表示錢款而設(shè)置。占8個(gè)位元組。小數(shù)點(diǎn)左邊最多15位,右邊最多4位。(4)Byte型占1個(gè)位元組,表示無(wú)符號(hào)整數(shù)。字元數(shù)據(jù)類型字元(String)類型存放字元型數(shù)據(jù)。用雙引號(hào)括起來(lái),如“abc”。
注:①”“表示空字元串,長(zhǎng)度為0。
②若字串中含有雙引號(hào),則用連續(xù)兩個(gè)雙引號(hào)表示,如”abc””12”。日期數(shù)據(jù)類型日期型(Date)表示日期和時(shí)間,占8個(gè)位元組。用“#”括起來(lái),如#2004-5-4#等。邏輯數(shù)據(jù)類型
邏輯型(Boolean)表示邏輯判斷,占2個(gè)位元組。只有True和Fale兩個(gè)值。邏輯型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)時(shí),True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。其他類型數(shù)據(jù)轉(zhuǎn)換成邏輯型數(shù)據(jù)時(shí),非0數(shù)轉(zhuǎn)換為True,0轉(zhuǎn)換為False。
對(duì)象數(shù)據(jù)類型
對(duì)象型(Object)表示圖形、OLE對(duì)象或其他對(duì)象,占4個(gè)位元組。變體數(shù)據(jù)類型變體型(Varient)可存放任何類型的數(shù)據(jù)類型說(shuō)明符
可在常量或變數(shù)的後邊加上類型說(shuō)明符指明它是哪一種數(shù)據(jù)類型,常見(jiàn)的類型說(shuō)明符如下:整型:%長(zhǎng)整型:&
單精確度型:!雙精度型:#字串型:$貨幣型:@3.1.2變數(shù)與常量命名規(guī)則
1.名字由字母、漢字、數(shù)字或下劃線組成;2.名字的第一個(gè)字元必須是字母或漢字;3.名字的有效長(zhǎng)度小於等於255個(gè)字元;4.不能使用VB中的關(guān)鍵字。5.VB中不區(qū)分變數(shù)名的大小寫(xiě)。6.為了增加程式的可讀性,可在變數(shù)名前加一個(gè)縮寫(xiě)的首碼來(lái)表明該變數(shù)的數(shù)據(jù)類型。
變數(shù)變數(shù)定義的一般格式如下:
Declare變數(shù)名As類型其中,①Declare可以是Dim、Static、Public、ReDim。Dim、Static用於定義局部變數(shù)
Dim用於定義窗體和模組級(jí)變數(shù)
Public用於定義全局變數(shù)
ReDim用於重新定義數(shù)組
②類型可以是基本數(shù)據(jù)類型或用戶自定義數(shù)據(jù)類型③若“As類型”省略,默認(rèn)為變體數(shù)據(jù)類型④可在變數(shù)名後加類型說(shuō)明符代替“As類型例如:DimxasInteger,yasSingleDimsasString
注:Dim定義的局部變數(shù)是自動(dòng)變數(shù),過(guò)程結(jié)束後其值被重新設(shè)置;
Static定義的局部變數(shù)是景泰變數(shù),過(guò)程結(jié)束後其值繼續(xù)保留。常量
VB中有三種常量:即直接常量、用戶聲明的符號(hào)常量和系統(tǒng)提供的常量。(1)直接常量直接常量其常數(shù)值直接反映了其類型,也可在常數(shù)值後緊跟類型符顯示地說(shuō)明常數(shù)的數(shù)據(jù)類型。(2)符號(hào)常量常量可用由用戶定義的符號(hào)常量表示,格式如下:
Const符號(hào)常量名[As類型]=運(yùn)算式[,常量名=運(yùn)算式]……例如:ConstPI=3.1415926(3)系統(tǒng)提供的常量
除了用戶通過(guò)聲明創(chuàng)建符號(hào)常量外,VB系統(tǒng)還提供了應(yīng)用程式和控件定義的常量,這些常量位於對(duì)象庫(kù)中,在“對(duì)象流覽器”中的VisualBasic(VB)、VisualBasicforApplications(VBA)等對(duì)象庫(kù)中列舉了VisualBasic的常量。
3.1.3運(yùn)算符和運(yùn)算式運(yùn)算符
1.算術(shù)運(yùn)算符加:+減:-乘:*整除:\浮點(diǎn)除:/取模:Mod
負(fù)號(hào):-冪運(yùn)算:^
2.字串運(yùn)算符“&”和”+“都是將兩個(gè)字串拼接起來(lái)。但字串連接時(shí)最好用”&”,因?yàn)椤?”還可以作為算術(shù)運(yùn)算符使用
3.關(guān)係運(yùn)算符對(duì)兩個(gè)運(yùn)算式的值做比較,若關(guān)係成立,則返回True,否則返回False。
等於=大於>大於等於>=小於<小於等於<=不等於<>或><字串匹配Like對(duì)象引用比較Is
4.邏輯運(yùn)算符取反:Not與:And或:Or
異或:Xor等價(jià):Eqv蘊(yùn)含:Imp
運(yùn)算式運(yùn)算式由變數(shù)、常量、運(yùn)算符、函數(shù)和圓括號(hào)按一定的規(guī)則組成。運(yùn)算式通過(guò)運(yùn)算後有一個(gè)結(jié)果,運(yùn)算結(jié)果的類型由數(shù)據(jù)和運(yùn)算符共同決定。當(dāng)一個(gè)運(yùn)算式中出現(xiàn)了多種不同類型的運(yùn)算符時(shí),不同類型的運(yùn)算符優(yōu)先順序如下:
算術(shù)運(yùn)算符>字元運(yùn)算符>關(guān)係運(yùn)算符>邏輯運(yùn)算符
常用內(nèi)部函數(shù)
VB提供了大量的內(nèi)部函數(shù)(或稱標(biāo)準(zhǔn)函數(shù))供用戶在編程時(shí)調(diào)用。內(nèi)部函數(shù)按其功能可分成數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)、字串函數(shù)、日期函數(shù)和格式輸出函數(shù)等。
具體內(nèi)容參見(jiàn)課本。3.1.4數(shù)組1.數(shù)組的概念2.靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組3.數(shù)組的清除和重定義4.數(shù)組元素的基本操作5.控件數(shù)組6.自定義數(shù)據(jù)類型1.數(shù)組的概念一、數(shù)組的概念
在實(shí)際應(yīng)用中,經(jīng)常需要處理同一類型的成批數(shù)據(jù)。比如,要處理100個(gè)學(xué)生的會(huì)計(jì)這門課程的考試成績(jī),如果在程式中定義100個(gè)變數(shù)來(lái)表示這批成績(jī),顯然是很麻煩的。我們可以用VB提供的數(shù)組來(lái)完成這個(gè)功能??梢杂胏1,c2,…,c100來(lái)分別代表每個(gè)學(xué)生的分?jǐn)?shù),也就是說(shuō),用一批具有相同名字、不同下標(biāo)的下標(biāo)變數(shù)來(lái)表示同一屬性的一組數(shù)據(jù),這樣能更清楚的表示它們之間的關(guān)係。在VB中,把一組具有相同名字、不同下標(biāo)的下標(biāo)變數(shù)稱為數(shù)組。在電腦中,下標(biāo)用“()”括起來(lái)。比如c(2),其中c為數(shù)組名,2是下標(biāo)。根據(jù)數(shù)組中下標(biāo)變數(shù)的個(gè)數(shù)可以分為一維數(shù)組、二維數(shù)組或多維數(shù)組。二、數(shù)組的聲明定義數(shù)組可以用Dim、Public、Private、Static語(yǔ)句實(shí)現(xiàn)。格式(以Dim為例):Dim<數(shù)組名>(<第一維說(shuō)明>[,<第二維說(shuō)明>]……)[As<類型>]例:Dimc(99)asSingleDims(3,4)asstringDimstu(3,6)Dima(2to100)asstring*5Dimb(2to30,5to40)說(shuō)明:①數(shù)組必須要先定義,後使用②如果不用AS語(yǔ)句指明類型,默認(rèn)為變體數(shù)據(jù)類型③一般情況下,下標(biāo)的下界默認(rèn)為0,如果希望下標(biāo)從1開(kāi)始,可以用OptionBase語(yǔ)句設(shè)置,格式為OptionBasen,其中n為下標(biāo)的下界,只能是0或1④可以根據(jù)需要指定數(shù)組下標(biāo)的下界,格式為Dim數(shù)組名([下界To]上界[,[下界To]上界]……)⑤在同一個(gè)過(guò)程中,數(shù)組名不能與變數(shù)名同名⑥在定義數(shù)組時(shí)如果指明了類型,那麼數(shù)組中的每個(gè)元素都是這種類型的;如果沒(méi)有指明或定義成了變體數(shù)據(jù)類型,則其中的每個(gè)元素也是變體類型,可以存放各種類型的數(shù)據(jù)。2.靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組定義數(shù)組後,為了使用數(shù)組,必須為數(shù)組開(kāi)闢所需要的記憶體區(qū)。根據(jù)記憶體區(qū)開(kāi)闢時(shí)機(jī)的不同,可把數(shù)組分為靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組。通常把需要在編譯時(shí)開(kāi)闢記憶體區(qū)的數(shù)組叫做靜態(tài)數(shù)組,把需要在運(yùn)行時(shí)開(kāi)闢記憶體區(qū)的數(shù)組叫做動(dòng)態(tài)數(shù)組。一、靜態(tài)數(shù)組靜態(tài)數(shù)組的數(shù)組元素的個(gè)數(shù)是在數(shù)組聲明時(shí)確定的,系統(tǒng)運(yùn)行過(guò)程中它的個(gè)數(shù)不變。前面定義的幾個(gè)數(shù)組都是靜態(tài)數(shù)組。我們主要講一下動(dòng)態(tài)數(shù)組。
二、動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組是在聲明數(shù)組時(shí)未給出數(shù)組的大?。ㄊ÷岳ɑ≈械南聵?biāo)),當(dāng)要使用它時(shí),隨時(shí)用ReDim語(yǔ)句重新指出大小的數(shù)組。使用動(dòng)態(tài)數(shù)組的優(yōu)點(diǎn)是可根據(jù)用戶需要,有效地利用存儲(chǔ)空間,它是在程式執(zhí)行到ReDim語(yǔ)句時(shí)分配存儲(chǔ)空間。建立動(dòng)態(tài)數(shù)組的方法是,使用Dim、Private或Public語(yǔ)句聲明括弧內(nèi)為空的數(shù)組,然後在過(guò)程中用ReDim語(yǔ)句指明該數(shù)組的大小。形式如下:
ReDim<數(shù)組名>(<下標(biāo)1>[,<下標(biāo)2>…])[As<類型>]例如:
Dims()asinteger‘定義動(dòng)態(tài)數(shù)組s,括弧不能省略
PrivateSubForm_Click()......n=InputBox("輸入n的值")
m=InputBox("輸入m的值")
n=Val(n)m=vla(m)ReDims(n,m)‘重新指明數(shù)組的大小......
EndSub
在過(guò)程中可多次使用ReDim語(yǔ)句來(lái)改變數(shù)組的大小,不能改變數(shù)組維數(shù),也不能改變數(shù)組的類型。每次執(zhí)行ReDim語(yǔ)句時(shí),當(dāng)前存儲(chǔ)在數(shù)組中的值都會(huì)全部丟失。VisualBasic重新將數(shù)組元素的值置為Empty(對(duì)Variant數(shù)組)、置為0(對(duì)Numeric數(shù)組)、置為零長(zhǎng)度字串(對(duì)String數(shù)組)。如果希望改變數(shù)組大小又不丟失數(shù)組中的數(shù)據(jù),可使用具有Preserve關(guān)鍵字的ReDim語(yǔ)句就可做到這點(diǎn)。如:Dimthis()AsStringPrivateSubCommand1_Click()ReDimthis(4)this(2)="microsoft"Printthis(2)ReDimPreservethis(6)Printthis(2)EndSub3.數(shù)組的清除和重定義在一個(gè)程式中,同一個(gè)數(shù)組只能定義一次。有時(shí)可能需要清除數(shù)組的內(nèi)容或?qū)?shù)組重新定義,這可以用Erase語(yǔ)句來(lái)實(shí)現(xiàn)。格式如下:
Erase<數(shù)組名>[,<數(shù)組名>]……說(shuō)明:①在Erase語(yǔ)句中,只給出要刷新的數(shù)組名,不帶括弧和下標(biāo)②Erase語(yǔ)句用於靜態(tài)數(shù)組時(shí),用來(lái)重新初始化各元素,內(nèi)容被清空。若是數(shù)值數(shù)組各元素被置0,字元數(shù)組各元素被置為空字元串。③Erase語(yǔ)句用於動(dòng)態(tài)數(shù)組時(shí),刪除整個(gè)數(shù)組的結(jié)構(gòu)並釋放該數(shù)組所佔(zhàn)用的記憶體。動(dòng)態(tài)數(shù)組經(jīng)Erase後不再存在。下次引用該動(dòng)態(tài)數(shù)組之前,必須用ReDim語(yǔ)句重新定義該數(shù)組的維數(shù)。4.數(shù)組元素的基本操作一、給數(shù)組元素賦值1.利用迴圈結(jié)構(gòu)
Fori=1to5A(i)=3Nexti2.利用InputBox()函數(shù)輸入
PrivateSubCommand1_Click()Dimb(2,3)Fori=0To2Forj=0To3b(i,j)=InputBox("輸入"&Str(i)&","&Str(j)&"的值")
NextjNexti
Fori=0To2Forj=0To3Printb(i,j);"";NextjPrintNextiEndSub
當(dāng)給一個(gè)較大的數(shù)組賦值時(shí),以上方法比較麻煩,可以用Array()函數(shù)解決。3.利用Array()函數(shù)
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
說(shuō)明: ①Array()函數(shù)對(duì)各元素賦值,聲明的數(shù)組是動(dòng)態(tài)數(shù)組或連小括弧都省略的數(shù)組,並且類型只能是Varient。②數(shù)組下界默認(rèn)為0,可通過(guò)OptionBase語(yǔ)句決定,上界由Array()函數(shù)括弧內(nèi)的參數(shù)個(gè)數(shù)決定,也可通過(guò)UBound()函數(shù)獲得。③Array函數(shù)只適用於一維數(shù)組。二、數(shù)組元素的輸出可以通過(guò)Print語(yǔ)句對(duì)數(shù)組輸出對(duì)一維數(shù)組,用單重迴圈就能實(shí)現(xiàn),對(duì)二維數(shù)組,要用二重迴圈實(shí)現(xiàn)。三、數(shù)組元素的複製1.單個(gè)數(shù)組元素可以像簡(jiǎn)單變數(shù)一樣從一個(gè)數(shù)組複製到另一個(gè)數(shù)組。如:Dimb(4),a(6)……b(2)=a(3)2.要複製整個(gè)數(shù)組,要使用For迴圈語(yǔ)句。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.要複製整個(gè)數(shù)組,也可以使用一條簡(jiǎn)單的賦值語(yǔ)句即可。如:
Dima(4)asinteger,b()asintegerA(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14B=a使用這種方法賦值時(shí),必須要注意:①賦值號(hào)兩邊的數(shù)據(jù)類型必須一致②如果賦值號(hào)左邊的是一個(gè)大小固定的數(shù)組,則數(shù)組賦值出錯(cuò)③賦值號(hào)左邊的必須是一個(gè)動(dòng)態(tài)數(shù)組,賦值時(shí)系統(tǒng)自動(dòng)將動(dòng)態(tài)數(shù)組ReDim成與右邊同樣大小的數(shù)組四、ForEach…Next語(yǔ)句與For…Next語(yǔ)句類似,兩者都是用來(lái)執(zhí)行指定重複次數(shù)的語(yǔ)句。但ForEach…Next語(yǔ)句是專門用於運(yùn)算元組的,它的格式如下:
ForEach<成員>In<數(shù)組名>[<循環(huán)體>][ExitFor]Next[<成員>]說(shuō)明:①格式中的“成員”必須是一個(gè)變體變數(shù),是為迴圈提供的,代表的是數(shù)組中的每個(gè)元素。②〈數(shù)組名〉沒(méi)有括弧和上下界用ForEach…Next語(yǔ)句可以對(duì)數(shù)組元素進(jìn)行處理,它所重複執(zhí)行的次數(shù)由數(shù)組中元素的個(gè)數(shù)確定,數(shù)組中有多少個(gè)元素,就自動(dòng)重複執(zhí)行多少次。例:OptionBase1PrivateSubCommand1_click()Dimabc(10)AsIntegerFori=1To10abc(i)=Int(Rnd*100)NextiPrint"使用普通迴圈輸出:"
Fori=1To10Printabc(i);NextiPrintPrint"使用ForEach…Next輸出:"
ForEachxInabcPrintx;NextEndSub5.自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型由若干個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類型組成,又稱記錄類型。通過(guò)Type語(yǔ)句實(shí)現(xiàn)。格式:Type自定義類型名元素名[(下標(biāo))]As類型名……[元素名[(下標(biāo))]As類型名]EndType如:TypeStudentNoAsIntegerNameAsString*20SexAsString*1Mark(1To4)AsSingleTotalAsSingleEndType說(shuō)明:①自定義數(shù)據(jù)類型一般在標(biāo)準(zhǔn)模組(.bas)中定義,默認(rèn)是Public。若在窗體模組中定義,必須是Private。②自定義數(shù)據(jù)類型中的元素類型可以是字串,但應(yīng)是定長(zhǎng)字串。定義好了類型,就可在變數(shù)的聲明時(shí)使用該類型,定義的方法和標(biāo)準(zhǔn)類型是一樣的。比如:Dimstuasstudent表示自定義類型變數(shù)中元素的格式為:變數(shù)名.元素名,如stu.no,等??山o變數(shù)stu賦值:標(biāo)準(zhǔn)函數(shù)2.1數(shù)學(xué)函數(shù)2.2轉(zhuǎn)換函數(shù)2.3字串函數(shù)2.4日期與事間函數(shù)1.數(shù)學(xué)函數(shù)Sin(N):返回引數(shù)N的正玄函數(shù)值,如:sin(0)=0,N為弧度。Cos(N):返回引數(shù)N的餘玄函數(shù)值,如:cos(0)=1,N為弧度。Tan(N):返回引數(shù)N的正切函數(shù)值,如:tan(0)=0,N為弧度。Atn(N):返回引數(shù)N的反正切值,如:atn(0)=0,函數(shù)值為弧度。Sgn(N):返回引數(shù)N的符號(hào)。N<0,返回-1;N=0,返回0;N》0,返回1。如:Sgn(35)=1,Sgn(0)=0,Sgn(-5.34)=-1Abs(N):返回引數(shù)N的絕對(duì)值,Abs(-345)=345,Abs(345)=345。Sqr(N):返回引數(shù)N的平方根,N>=0,如:Sqr(81)=9。Exp(N):返回e的N次冪值,n>=0。如:Exp(3)=20.086。Log(N):返回N的自然對(duì)數(shù),N>0,如:Log(10)=2.3Int(N):返回不大於N的最大整數(shù),如:Int(3.6)=3。Cint(N):四捨五入整數(shù)。Cint(3.6)=4。Rnd(N):返回0~1之間的隨機(jī)小數(shù)。注意:三角函數(shù)的引數(shù)以弧度表示。
2.轉(zhuǎn)換函數(shù)Fix(n):返回n的整數(shù)部分,截取小數(shù)部分;如:Fix(3.4)=3。Asc(c):返回字串C首字元的ASCII碼值,如:Asc(”A”)=65。Chr(n):返回ASCII碼值為n的字元,Chr(65)=”65”。Val(c):把數(shù)字組成的字串型數(shù)據(jù)轉(zhuǎn)換稱數(shù)值型。Val(”456”)=456。Str(n):把數(shù)值n轉(zhuǎn)換成字元型,Str(357)=”357”。Lcase(c):把字串c中大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。Lcase(”A”)=”a”。Ucase(c):把字串c中小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。Ucase(”a”)=”A”。3.字串函數(shù)Trim(c):去掉字串c兩端的空格,Trim(”ab”)=”ab”。Left(c,n):截取C最左邊的n個(gè)字元,Left(”command,3”)=”com”。Right(c,n):截取c最右邊的n個(gè)字元,Right(”command,3”)=”and”.Mid(C,m,n):截取c中第m個(gè)字元開(kāi)始的n個(gè)字元。Mid(”command”,3,2)=”mm”。Len(c):返回c包含的字元數(shù),漢字空格都算一個(gè)字元。Len(”中”)=1。Ucase(c):將c中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母。Ucase(”Who”)=”WHO”.Lcase(c):將c中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母。Lcase(”Who”)=”who”。4.日期與時(shí)間函數(shù)Time[$][()]:返回系統(tǒng)當(dāng)前時(shí)間;Date[$][()]:返回系統(tǒng)當(dāng)前日期;Now[()]:返回系統(tǒng)當(dāng)前日期和時(shí)間;Day(c/n):返回?cái)?shù)據(jù)中當(dāng)月第幾天;Month(c/n):返回?cái)?shù)據(jù)中當(dāng)年第幾月;WeekDay(c/n):返回?cái)?shù)據(jù)當(dāng)天是星期幾。三基本控制結(jié)構(gòu)3.1順序結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.3迴圈結(jié)構(gòu)3.1順序結(jié)構(gòu)順序結(jié)構(gòu)就是各語(yǔ)句按出現(xiàn)的先後次序執(zhí)行。主要是由一些賦值語(yǔ)句、輸入/輸出語(yǔ)句等組成。賦值語(yǔ)句
格式:變數(shù)名=運(yùn)算式
在VB中,既可以給一個(gè)變數(shù)賦值,也可以給對(duì)象的某一個(gè)屬性賦值。InputBox()函數(shù)
格式:InputBox(提示[,標(biāo)題][,默認(rèn)][,x座標(biāo)位置][,y座標(biāo)位置])功能:產(chǎn)生一個(gè)對(duì)話框,讓用戶從鍵盤輸入內(nèi)容,當(dāng)用戶單擊“確定”按鈕或按回車鍵時(shí),函數(shù)返回輸入的值。
PrivateSubCommand1_Click()r=InputBox("請(qǐng)輸入姓名","教師登記表","張三",3000,4000)
PrintrEndSub
其中:“提示”:字串運(yùn)算式,在對(duì)話框中作為資訊顯示。“標(biāo)題”:字串運(yùn)算式,在對(duì)話框的標(biāo)題區(qū)顯示。“默認(rèn)”:字串運(yùn)算式,顯示輸入框裏的默認(rèn)資訊?!皒座標(biāo)位置”、“y座標(biāo)位置”:整型運(yùn)算式,座標(biāo)確定對(duì)話框左上角在螢?zāi)簧系奈恢茫災(zāi)蛔笊辖菫樽鶚?biāo)原點(diǎn),單位為twip。
在這五個(gè)參數(shù)中,只有“提示”是必選的。注:函數(shù)的返回值為字串類型,所以如果要對(duì)返回值進(jìn)行算術(shù)運(yùn)算,必須要轉(zhuǎn)換成數(shù)值型的。
例如:PrivateSubCommand1_Click()r=InputBox("請(qǐng)輸入第一個(gè)數(shù)")
s=InputBox("請(qǐng)輸入第二個(gè)數(shù)")
r=Val(r):s=Val(s)x=r+sPrintxEndSubMsgBox()函數(shù)格式:變數(shù)=MsgBox(提示[,按鈕][,標(biāo)題])功能:打開(kāi)一個(gè)資訊框,等待用戶選擇一個(gè)按鈕。例如:PrivateSubCommand1_Click()r=MsgBox("輸入密碼",51,"密碼錯(cuò)誤")
PrintrEndSub
“提示”和“標(biāo)題”:意義與InputBox函數(shù)中對(duì)應(yīng)的參數(shù)相同。“按鈕”:整型運(yùn)算式,用來(lái)控制在資訊框內(nèi)顯示的按鈕、圖示的種類和數(shù)量,該參數(shù)的值由4類數(shù)值相加產(chǎn)生,這4類數(shù)值或符號(hào)常量分別表示按鈕類型、顯示圖示的種類、活動(dòng)按鈕(默認(rèn)按鈕)的位置及強(qiáng)制返回模式。按鈕設(shè)置值及意義見(jiàn)下圖。“按鈕”設(shè)置值及意義
4類分組系統(tǒng)內(nèi)部常量按鈕值描述按鈕類型VbOkOnlyVbOkCancelvbAboutRetryIgnoreVbYesNoCancelVbYesNoVbRetryCancel012345只顯示“確定”按鈕顯示“確定”、“取消”按鈕顯示“終止”、“重試”、“忽略”按鈕顯示“是”、“否”、“取消”按鈕顯示“是”、“否”按鈕顯示“重試”、“取消”按鈕圖示類型VbCriticalVbQuestionVbExclamationVbInformation16324864關(guān)鍵資訊圖示紅色STOP標(biāo)誌詢問(wèn)資訊圖示?警告資訊圖示!資訊圖示i默認(rèn)按鈕VbDefaultButtonlVbDefaultButton2VbDefaultButton30256512第1個(gè)按鈕為默認(rèn)第2個(gè)按鈕為默認(rèn)第3個(gè)按鈕為默認(rèn)模式VbApplicationModuleVbSystemModule04096應(yīng)用模式系統(tǒng)模式MsgBox函數(shù)返回值是一個(gè)整數(shù)值,這個(gè)返回值與所選的按鈕有關(guān),所選按鈕返回?cái)?shù)值的意義見(jiàn)下圖。被單擊的按鈕返回值系統(tǒng)內(nèi)部常量確定1VbOk取消2VbCancel終止3VbAbort重試4VbRetry忽略5VbIgnore是6VbYes否7vbNo再看一個(gè)有關(guān)返回值的例子:編寫(xiě)一個(gè)程式,用MsgBox函數(shù)判斷是否繼續(xù)執(zhí)行。PrivateSubForm_Click()DimMsg$,Title$Dimm%Msg$="此數(shù)據(jù)是否正確"
Title$="數(shù)據(jù)驗(yàn)證對(duì)話框"
m=MsgBox(Msg$,35,Title$)‘35=3+32+0+0Ifm=6Then‘Print"正確";m*mElseIfm=7Orm=2ThenPrint"數(shù)據(jù)錯(cuò)誤,請(qǐng)重新輸入"
EndIfEndSub對(duì)於一些較簡(jiǎn)單的資訊提示,我們可以使用MsgBox語(yǔ)句,格式如下:
MsgBox提示[,按鈕][,標(biāo)題]它與MsgBox函數(shù)的主要區(qū)別是函數(shù)有返回值,而語(yǔ)句沒(méi)有返回值3.2選擇結(jié)構(gòu)選擇結(jié)構(gòu),就是對(duì)條件進(jìn)行判斷,根據(jù)判斷結(jié)果,選擇執(zhí)行不同的分支。
VB中提供了多種形式的條件語(yǔ)句來(lái)實(shí)現(xiàn),我們主要介紹If條件語(yǔ)句和SelectCase語(yǔ)句If條件語(yǔ)句
If條件語(yǔ)句有兩種格式:?jiǎn)涡薪Y(jié)構(gòu)和塊結(jié)構(gòu)1.單行結(jié)構(gòu)格式:
If<條件>Then<語(yǔ)句塊1>[Else<語(yǔ)句塊2>]如果Then或Else後面有多條語(yǔ)句,那麼各語(yǔ)句之間用“:”隔開(kāi)。2.塊結(jié)構(gòu)格式:
If<條件>Then<語(yǔ)句塊l>[Else<語(yǔ)句塊2>]
EndIfThen和Else後面不能有語(yǔ)句,而且最後不要忘了寫(xiě)上EndIf。這兩種結(jié)構(gòu)都比較簡(jiǎn)單,就不再舉具體的例子了。在實(shí)際應(yīng)用中,我們還經(jīng)常用的If語(yǔ)句的嵌套,即一個(gè)If語(yǔ)句裏又包含一個(gè)If語(yǔ)句。舉一個(gè)簡(jiǎn)單的例子:某商場(chǎng)為了促銷,採(cǎi)用購(gòu)物打折的優(yōu)惠辦法,每位顧客一次購(gòu)物(1)1000元以上,按九五折優(yōu)惠(2)2000元以上,按九折優(yōu)惠(3)3000元以上,按八五折優(yōu)惠(4)5000元以上,按八折優(yōu)惠編寫(xiě)程式,輸入購(gòu)物款數(shù),計(jì)算並輸出優(yōu)惠價(jià)。方法一: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上面的這個(gè)程式出現(xiàn)多次If語(yǔ)句嵌套,程式長(zhǎng),不便閱讀。為此VB提供了帶ElseIf的塊If語(yǔ)句,使程式簡(jiǎn)化易寫(xiě)。其格式如下:If<條件1>Then<語(yǔ)句塊l>Elself<條件2>Then<語(yǔ)句塊2>……[Else<語(yǔ)句塊n+1>]EndIf上面的例子可以改寫(xiě)成這種格式的,代碼如下:方法二: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語(yǔ)句又稱情況語(yǔ)句,是多分支結(jié)構(gòu)的另一種形式。格式:
SelectCase變數(shù)或運(yùn)算式
Case運(yùn)算式列表1<語(yǔ)句塊1>
Case運(yùn)算式列表2<語(yǔ)句塊2>…[CaseElse<語(yǔ)句塊n+1>]EndSelect
格式中的“運(yùn)算式列表”可為下列形式之一:(1)運(yùn)算式[,運(yùn)算式]……
eg:Case2,4,6,8(2)運(yùn)算式To運(yùn)算式
eg:Case1to5(3)Is關(guān)係運(yùn)算運(yùn)算式
eg:CaseIs<10情況語(yǔ)句執(zhí)行時(shí)先對(duì)“測(cè)試運(yùn)算式”求值,然後測(cè)試該值與哪一個(gè)Case子句中的“運(yùn)算式列表”匹配,如果找到了,就執(zhí)行與該Case語(yǔ)句有關(guān)的語(yǔ)句塊,執(zhí)行完後轉(zhuǎn)移到EndSelect後面的語(yǔ)句;如果沒(méi)有找到,則執(zhí)行與CaseElse子句有關(guān)的語(yǔ)句塊,然後在轉(zhuǎn)移到EndSelect後面的語(yǔ)句。剛才那個(gè)購(gòu)物打折的例子同樣可以用情況語(yǔ)句實(shí)現(xiàn),代碼如下:方法三:PrivateSubForm_Click()DimxAsSingle,yAsSinglex=InputBox("請(qǐng)輸入購(gòu)物款數(shù)")
x=Val(x)SelectCasexCaseIs<1000y=xCaseIs<2000y=0.95*xCaseIs<3000y=0.9*x
CaseIs<5000y=0.85*xCaseElsey=0.8*xEndSelectPrint"購(gòu)物款數(shù):";x,"優(yōu)惠價(jià):";yEndSub同一個(gè)問(wèn)題,解決的方法可能有多種,我們最好選擇自己比較熟悉而又簡(jiǎn)單的來(lái)實(shí)現(xiàn)3.3迴圈結(jié)構(gòu)在實(shí)際應(yīng)用中,經(jīng)常遇到一些操作並不複雜,但需要反復(fù)多次處理的問(wèn)題,比如人口增長(zhǎng)統(tǒng)計(jì)、計(jì)算存款利息等,這些問(wèn)題如果用順序結(jié)構(gòu)來(lái)處理十分麻煩,有時(shí)甚至難以實(shí)現(xiàn),而使用VB提供的迴圈語(yǔ)句可以輕鬆實(shí)現(xiàn)。迴圈結(jié)構(gòu)就是在指定的條件下多次重複執(zhí)行一組語(yǔ)句。VB提供了兩種不同風(fēng)格的迴圈結(jié)構(gòu):計(jì)數(shù)迴圈(For-Next迴圈)當(dāng)迴圈(While迴圈)
Do迴圈(Do-Loop迴圈)For迴圈語(yǔ)句
格式:For迴圈變數(shù)=初值To終值[step步長(zhǎng)]<語(yǔ)句塊>[ExitFor]循環(huán)體<語(yǔ)句塊>Next迴圈變數(shù)
說(shuō)明:①迴圈變數(shù)也稱“迴圈計(jì)算器”或“迴圈控制變數(shù)”,為數(shù)值型。②初值與終值均為數(shù)值運(yùn)算式。③步長(zhǎng)是一個(gè)數(shù)值運(yùn)算式,為迴圈變數(shù)的增量,可正可負(fù);如果省略,默認(rèn)為1。④ExitFor可用於提前退出for迴圈。⑤Next後面的“迴圈變數(shù)”與For後面的“迴圈變數(shù)“必須相同。執(zhí)行過(guò)程:①把“初值”賦給“迴圈變數(shù)”②檢查“迴圈變數(shù)”是否超過(guò)終值,若沒(méi)有則執(zhí)行循環(huán)體,若超出則結(jié)束迴圈,執(zhí)行Next後面的語(yǔ)句③迴圈變數(shù)加步長(zhǎng),轉(zhuǎn)②,繼續(xù)迴圈。由上可看出For-Next迴圈的迴圈次數(shù)由初值、終值和步長(zhǎng)三個(gè)因素決定,計(jì)算公式為:迴圈次數(shù)=Int(終值-初值)/步長(zhǎng)+1下麵舉一個(gè)例子:求n!(n為自然數(shù))PrivateSubForm_Click()DimnAsIntegern=InputBox("輸入n的值:")
k=1Fori=1Tonk=k*iNextiPrintn;"!=";kEndSub再看一個(gè)有關(guān)步長(zhǎng)和ExitFor語(yǔ)句的例子。PrivateSubForm_Click()Fori=1To100s=s+iIfs=4851ThenExitForEndIfNextiPrintiEndSub當(dāng)迴圈(While迴圈)格式:
While條件[語(yǔ)句塊]
Wend
當(dāng)條件為True時(shí),執(zhí)行循環(huán)體。
例:PrivateSubForm_click()DimcharAsStringConstch$="?"Counter=0msg$="輸入一個(gè)字母"
char=InputBox$(msg$)Whilechar<>chCounter=Counter+1char=InputBox$(msg$)WendPrint"輸入字母的個(gè)數(shù)為:";CounterEndSub
Do…Loop迴圈語(yǔ)句Do迴圈有兩種格式:格式一:Do[{While|Until}<條件>]<語(yǔ)句塊>[ExitDo]<語(yǔ)句塊>Loop說(shuō)明:①格式一為先判斷後執(zhí)行,循環(huán)體有可能一次也不執(zhí)行。格式二為先執(zhí)行後判斷,至少執(zhí)行一次循環(huán)體。②While用於指明條件為
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豐田買車銷售合同范本
- 合同范本租房
- 增強(qiáng)民營(yíng)企業(yè)發(fā)展活力促進(jìn)經(jīng)濟(jì)高質(zhì)量增長(zhǎng)
- 吊裝租賃搬運(yùn)合同范本
- 合同范本不需審查
- 合同范本電子版
- 公路工程竣工檢測(cè)合同范本
- 醫(yī)療美容項(xiàng)目合同范例
- 兄弟之間借款合同范例
- 語(yǔ)文-2025年江西省中考第一次模擬考試(全解全析)
- 貴州省就業(yè)失業(yè)登記表
- 預(yù)防電信詐騙網(wǎng)絡(luò)詐騙講座PPT幻燈片課件
- 反興奮劑知識(shí)試題及答案
- 初中八年級(jí)上冊(cè)音樂(lè)課件4.2欣賞沃爾塔瓦河(14張)ppt課件
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)每個(gè)單元教材分析(共九個(gè)單元)
- 深圳氫燃料共享單車項(xiàng)目投資計(jì)劃書(shū)【參考范文】
- 主要腸內(nèi)營(yíng)養(yǎng)制劑成分比較
- 小學(xué)生如何理解句子的含義(課堂PPT)
- 實(shí)際控制關(guān)系賬戶申報(bào)表
- 沖床架模技術(shù)與作業(yè)規(guī)范
- 小學(xué)五年級(jí)綜合實(shí)踐課教案
評(píng)論
0/150
提交評(píng)論