佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > VBA 編程基礎(chǔ)

VBA 編程基礎(chǔ)

熱門標簽:硅谷的囚徒呼叫中心 企業(yè)做大做強 呼叫中心市場需求 Win7旗艦版 電話運營中心 百度AI接口 語音系統(tǒng) 客戶服務(wù)
11.3.1 了解 Visual Basic 語法
本節(jié)解釋最常見的語法元素。
11.3.1.1 Activate 方法的語法
語法:object.Activate
在 Activate 方法的語法中,object 是一個所提供信息的占位符,在此例中的代碼會返回一個對象。例如,下面的過程會在活動的文檔中激活第二個窗口。
Sub MakeActive()
Windows(2).Activate
End Sub

11.3.1.2 MsgBox 函數(shù)的語法
語法:MsgBox(prompt[, buttons] [, title] [, helpfile, context])
在 MsgBox 函數(shù)的語法中,括號內(nèi)的參數(shù)是此函數(shù)的命名參數(shù)。方括號所包含的參數(shù)是選擇性的(在Visual Basic 中不用鍵入方括號)。在 MsgBox 函數(shù)中,唯一必須提供的參數(shù)(prompt)是做為提示的文本。
在代碼中可以利用位置或名稱來指定函數(shù)與方法的參數(shù)。若利用位置來指定參數(shù),則必須根據(jù)語法中的順序,利用逗號來分隔每一個參數(shù),例如:
MsgBox "Your answer is correct!",0,"Answer Box"
若以名稱來指定參數(shù),則須使用參數(shù)名稱或跟著冒號與等號(:=),最后再加上參數(shù)值??梢匀魏蔚捻樞騺碇付麉?shù),例如:
MsgBox Title:="Answer Box", Prompt:="Your answer is correct!"
函數(shù)以及某些方法的語法會利用圓括號將參數(shù)封閉起來。這些函數(shù)和方法會返回值,所以必須用圓括號將參數(shù)封閉起來,才可以賦值給變量。如果忽略返回值或是沒有傳遞所有的參數(shù),則可以不用圓括號。方法若不返回值,則不用將參數(shù)用圓括號封閉起來。上述準則不管是使用命名參數(shù)或位置參數(shù)都適用。
在下面的示例中,MsgBox 函數(shù)的返回值是一個號碼,它被存儲在變量 myVar 中,以用來指示選擇的按鈕。因為需要用到返回值,所以調(diào)用時必須使用圓括號。而另一個消息框則是用來顯示變量的值。

Sub Question()
myVar = MsgBox(Prompt:="I enjoy my job.", _
Title:="Answer Box", Buttons:="4")
MsgBox myVar
End Sub

11.3.1.3 選項語句的語法
語法:Option Compare {Binary | Text | Database}
在 Option Compare 語句的語法中,大括號和垂直線指示三項中的強制性選擇(在Visual Basic 的語句中不用鍵入大括號)。例如,下列的語句指出在模塊中,字符串的比較是根據(jù)文本的排序順序而不區(qū)分大小寫。
Option Compare Text


11.3.1.4 Dim 語句的語法
語法: Dim varname[ ( [subscripts] ) ] [As type] [, varname[([subscripts])] [As type]] . . .
在 Dim 語句的語法中,Dim 是必備的關(guān)鍵字。而唯一必備的元素是 varname(變量名)。例如,下列的語句創(chuàng)建三個變量:myVar、 nextVar 和 thirdVar。它們會自動被聲明成 Variant 變量。
Dim myVar, nextVar, thirdVar
下面的示例聲明了一個String 型的變量。它包含了數(shù)據(jù)類型,如此可以節(jié)省內(nèi)存并且可幫助從代碼中找出錯誤。
Dim myAnswer As String
若在一個語句中聲明好幾個變量,則必須包含每一個變量的數(shù)據(jù)類型。變量在聲明時若少了數(shù)據(jù)類型,則會自動地聲明為Variant 。
Dim x As Integer, y As Integer, z As Integer
在下列的語句中,x 與 y 都被指定成 Variant 數(shù)據(jù)類型,只有 z 被指定成 String 數(shù)據(jù)類型。
Dim x, y As Integer,Z As String
如果聲明一個數(shù)組變量,則必須包含圓括號,但下標則是可選的。下列的語句中定義了一個動態(tài)數(shù)組 myArray。
Dim myArray()

11.3.2 有效地利用數(shù)據(jù)語法
表11-1 列出VBA 所支持的數(shù)據(jù)類型,以及存儲空間的大小與范圍。


注意:
任何數(shù)據(jù)類型的數(shù)組都需要 20 個字節(jié)的內(nèi)存空間,加上每一數(shù)組維數(shù)占 4 個字節(jié),再加上數(shù)據(jù)本身所占用的空間。數(shù)據(jù)所占用的內(nèi)存空間可以用數(shù)據(jù)元數(shù)目乘上每個元素的大小加以計算。例如,以 4 個 2 字節(jié)的Integer 數(shù)據(jù)元所組成的一維數(shù)組中的數(shù)據(jù),占 8個字節(jié)。這 8 個字節(jié)加上額外的 24 個字節(jié),使得這個數(shù)組所需總內(nèi)存空間為 32 個字節(jié)。包含一數(shù)組的 Variant 比單獨的一個數(shù)組需要多 12 個字節(jié)。
注意:
使用 StrConv 函數(shù)把字符串數(shù)據(jù)從一種類型轉(zhuǎn)換為另一種類型。
除非有其他的指定,否則未聲明變量會被指定成 Variant 數(shù)據(jù)類型。這個數(shù)據(jù)類型可使寫程序變得較容易,但它并不總是使用中最有效率的數(shù)據(jù)類型。
若有下列情形時必須考慮使用其他的數(shù)據(jù)類型:

程序非常大并且使用很多變量。
程序的執(zhí)行速度必須盡可能得快。
將數(shù)據(jù)直接寫到隨機存儲文件中。
除了 Variant 之外,支持的數(shù)據(jù)類型包括 Byte、Boolean、 Integer、Long、Single、Double、Currency、Decimal、Date、Object 以及 String。可使用 Dim 語句去聲明一個指定類型的變量,例如:
Dim X As Integer
上述語句聲明變量 X 是一個整型,其范圍介于-32,768~32,767 之間。如果試著去設(shè)置超出此范圍的數(shù)值給 X ,則會有錯誤發(fā)生。如果試著去指定一個分數(shù)給 X,則此分數(shù)會自動四舍五入。例如:
X = 32768 ' 產(chǎn)生錯誤。 X = 5.9 ' 設(shè)置 x = 6。

11.3.3 Visual Basic 的命名規(guī)則
當在 Visual Basic 的模塊中為過程、常數(shù)、變量以及參數(shù)命名時,可以使用下列的規(guī)則:
第一個字符必須使用英文字母。
不能在名稱中使用空格、句點(.)、驚嘆號(!)、或 @、、 $,# 等字符。
名稱的長度不可以超過 255 個字符。
通常,使用的名稱不能與 Visual Basic 本身的 Function 過程、語句以及方法的名稱相同。必須退出使用與程序語言的關(guān)鍵字相同的名稱。若所使用的內(nèi)在語言函數(shù),語句或方法與所指定的名稱相沖突,則必須顯示地識別它。常規(guī)會將內(nèi)建函數(shù),語句或方法的名稱之前加上關(guān)聯(lián)的類型庫的名稱。例如,如果有一個名為 Left 的變量,則只能用 VBA.Left 來調(diào)用 Left 函數(shù)。
不能在范圍的相同層次中使用重復(fù)的名稱。例如,不能在同一過程中聲明兩個命名為 age 的變量。然而,可以在同一模塊中聲明一個命名為 age 的私有變量和命名為 age 的過程級別的變量。
注意:
Visual Basic 不區(qū)分大小寫,但它會在名稱被聲明的語句處保留大寫。

11.3.4 聲明變量、常數(shù)和數(shù)組

11.3.4.1 聲明變量
通常會使用 Dim 語句來聲明變量。一個聲明語句可以放到過程中以創(chuàng)建屬于過程的級別的變量?;蛟诼暶鞑糠挚蓪⑺诺侥K頂部,以創(chuàng)建屬于模塊級別的變量。
下面的示例創(chuàng)建了變量 strName 并且指定為 String 數(shù)據(jù)類型。 Dim strName As String
如果該語句出現(xiàn)在過程中,則變量 strName 只可以在此過程中被使用。如果該語句出現(xiàn)在模塊的聲明部分,則變量 strName 可以被此模塊中所有的過程所使用,但是不能被同一工程中不同的模塊所含過程來使用。為了使變量可被工程中所有的過程所使用,則在變量前加上 Public 語句,如以下的示例:
Public strName As String
變量可以聲明成下列數(shù)據(jù)類型中的一種:Boolean、Byte、 Integer、Long、Currency、Single、Double、Date、String(變長字符串)、String * length (定長字符串)、Object 或 Variant。如果未指定數(shù)據(jù)類型,則 Variant 數(shù)據(jù)類型被賦予默認。也可以使用 Type 語句來創(chuàng)建用戶自定義類型。
可以在一個語句中聲明幾個變量。而為了指定數(shù)據(jù)類型,必須將每一個變量的數(shù)據(jù)類型包含進來。在下面的語句中,變量 intX、 intY、與 intZ 被聲明為 Integer 類型。
Dim intX As Integer, intY As Integer, intZ As Integer
在下面的語句中,變量 intX 與 intY 被聲明為 Variant 類型;只有intZ 被聲明為 Integer 類型。
Dim intX, intY, intZ As Integer
在聲明語句中,不一定要提供變量的數(shù)據(jù)類型。若省略了數(shù)據(jù)類型,則會將變量設(shè)成 Variant 類型。
使用 Public 語句:可以使用 Public 語句去聲明公共模塊級別變量。
Public strName As String
公有變量可用于工程中的任何過程。如果公有變量是聲明于標準模塊或是類模塊中,則它也可以被任何引用到此公有變量所屬工程的工程中使用。
使用 Private 語句:可以使用 Private 語句去聲明私有的模塊級別變量。
Private MyName As String
私有變量只可使用于同一模塊中的過程。
注意:
在模塊級別中使用 Dim 語句與使用 Private 語句是相同的。不過使用 Private 語句可以更容易地讀取和解釋代碼。
使用Static 語句:當使用 Static 語句取代 Dim 語句時,所聲明的變量在調(diào)用時仍保留它原先的值。
使用Option Explicit 語句:在 Visual Basic 中可以簡單地通過一個賦值語句來隱含聲明變量。所有隱含聲明變量都為 Variant 類型,而Variant 類型變量比大多數(shù)其他類型的變量需要更多的內(nèi)存資源。如果顯式地聲明變量為指定的數(shù)據(jù)類型,則應(yīng)用程序?qū)⒏行?。顯式聲明所有變量減少了命名沖突以及拼寫錯誤的發(fā)生率。
如果不想使Visual Basic 生成隱含聲明,可以將Option Explicit 語句放置于模塊中所有的過程之前。這一個語句要求對模塊中所有的變量做顯式地聲明。如果模塊包含Option Explicit 語句,則當 Visual Basic 遇到一個先前未定義的變量或拼寫錯誤,它會發(fā)生編譯時間的錯誤。
可以設(shè)置 Visual Basic 程序環(huán)境中的某個選項,使得自動在所有新的模塊中包含 Option Explicit 語句。
注意: 需顯式地聲明固定大小的數(shù)組與動態(tài)數(shù)組。
為自動化聲明一個對象變量:當使用一個應(yīng)用程序去控制另外一個應(yīng)用程序的對象時,應(yīng)該設(shè)置一個對于其他應(yīng)用程序的類型庫的引用。若設(shè)置一個引用,則可以根據(jù)它們最常指定的類型來聲明對象變量。例如,如果是在 Microsoft Word 中,當對 Microsoft Excel 類型庫做一引用設(shè)置時,可以在 Microsoft Word 中聲明 Worksheet 類型的變量來表示 Microsoft Excel 中的Worksheet 對象。
如果使用其他的應(yīng)用程序去控制 Microsoft Access 對象,在多數(shù)情況下,可以根據(jù)它們最常指定的類型來聲明對象變量。也可以使用關(guān)鍵字 New 去自動生成一個對象的新實例。然而,可能要指示它是 Microsoft Access 對象。例如,當在 Microsoft Visual Basic 里面聲明一個對象變量去表示 Microsoft Access form 時,必須區(qū)別它是 Microsoft Access Form 對象或是 Visual Basic Form 對象。所以在聲明變量的語句中必須要包含類型庫的名稱,如下面示例所示:
Dim frmOrders As New Access.Form
某些應(yīng)用程序并不能識別特別的 Microsoft Access 對象類型。既使已經(jīng)在這些應(yīng)用程序中設(shè)置了一個對 Microsoft Access 類型庫的引用,必須聲明所有 Microsoft Access 對象變量為 Object 類型。不能使用 New 關(guān)鍵字去創(chuàng)建這個對象的新實例。下面的示例顯示了不能識別 Microsoft Access 對象類型的應(yīng)用程序,如何去聲明一個變量用來表示 Microsoft Access Application 對象。然后應(yīng)用程序創(chuàng)建一個 Application 對象的實例。
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")

11.3.4.2 聲明常數(shù)
如果要聲明一個常數(shù),可以使用 Const 語句去聲明,并且設(shè)置它的值;而在常數(shù)聲明完之后,則不能加以更改或賦予新值。
在聲明部分,可以在過程中或者在模塊頂部聲明常數(shù)。模塊級別中的常數(shù)默認為私有的。若要聲明一個公共模塊級別常數(shù),則可以在 Const 語句前加上 Public 這個關(guān)鍵字。也可以利用在 Const 語句前加上 Public 關(guān)鍵字來明確地聲明一個私有的常數(shù),使得我們可更容易地去讀取并且解釋代碼。
下面的示例,聲明了一個 Public 常數(shù) conAge 為 Integer 類型,并且指定它的值 為34。
Public Const conAge As Integer = 34
常數(shù)可以聲明成下列數(shù)據(jù)類型中的一種:Boolean、Byte、 Integer、Long、Currency、Single、Double、Date、String 或 Variant。因為已經(jīng)知道常數(shù)的值,所以可以指定 Const 語句中的數(shù)據(jù)類型。關(guān)于數(shù)據(jù)類型的詳細信息。
可以在一個語句中聲明數(shù)個常數(shù)。為了指定數(shù)據(jù)類型,必須將每一個常數(shù)的數(shù)據(jù)類型包含進來。在下面的語句中,常數(shù) conAge 和 conWage 被聲明為 Integer 類型。
Const conAge As Integer = 34, conWage As Currency = 35000

11.3.4.3 聲明數(shù)組
數(shù)組的聲明方式和其他的變量是一樣的,它可以使用 Dim、 Static、Private 或 Public 語句來聲明。標量變量(非數(shù)組)與數(shù)組變量的不同在于通常必須指定數(shù)組的大小。若數(shù)組的大小被指定的話,則它是個固定大小數(shù)組。若程序運行時數(shù)組的大小可以被改變,則它是個動態(tài)數(shù)組。
數(shù)組是否從 0 或 1 索引是根據(jù) Option Base 語句的設(shè)置。如果 Option Base 沒有指定為1,則數(shù)組索引從0 開始。
1.聲明固定大小的數(shù)組
下面這行代碼聲明了一個固定大小的數(shù)組,它是個 11 行乘以 11 列的Integer 數(shù)組:
Dim MyArray(10, 10) As Integer
第一個參數(shù)代表的是行;而第二個參數(shù)代表的是列。
與其他變量的聲明一樣,除非指定一個數(shù)據(jù)類型給數(shù)組,否則聲明數(shù)組中元素的數(shù)據(jù)類型為 Variant。數(shù)組中每個數(shù)組的數(shù)字型 Variant 元素占用 16 個字節(jié)。每個字符串型 Variant 元素占用 22 個字節(jié)。為了盡可能使寫的代碼簡潔明了,則要明確聲明的數(shù)組為某一種數(shù)據(jù)類型而非 Variant。下面的這幾行代碼比較了幾個不同數(shù)組的大小:
' 整型數(shù)組使用 22 個字節(jié)(11 元素* 2 字節(jié))。
ReDim MyIntegerArray(10) As Integer
' 雙精度數(shù)組使用 88 個字節(jié)(11 元素 * 8 字節(jié))。
ReDim MyDoubleArray(10) As Double
' 變體型數(shù)組至少使用 176 字節(jié)(11 元素 * 16 字節(jié))。
ReDim MyVariantArray(10)
' 整型數(shù)組使用 100 * 100 * 2 字節(jié)(20,000 字節(jié))。
ReDim MyIntegerArray (99, 99) As Integer
' 雙精度數(shù)組使用 100 * 100 * 8 字節(jié)(80,000 字節(jié))。
ReDim MyDoubleArray (99, 99) As Double
' 變體型數(shù)組至少使用 160,000 字節(jié)(100 * 100 * 16 字節(jié))。
ReDim MyVariantArray(99, 99)
數(shù)組變量的最大值,是以所用的操作系統(tǒng)有多少可用內(nèi)存為基礎(chǔ)。若使用的數(shù)組大小超過了系統(tǒng)中可用內(nèi)存總數(shù)的話,則速度會變慢,因為必須從磁盤中讀寫回數(shù)據(jù)。
2.聲明動態(tài)數(shù)組
若聲明為動態(tài)數(shù)組,則可以在執(zhí)行代碼時改變數(shù)組大小。可以利用 Static、Dim、Private 或 Public 語句來聲明數(shù)組,并使括號內(nèi)為空,如下示例所示。
Dim sngArray() As Single
注意:
可以在過程中使用 ReDim 語句來做隱含性的數(shù)組聲明。當使用 ReDim 語句時要小心點,不要拼錯數(shù)組的名稱。否則即使在模塊中有包含 Option Explicit 語句,仍然會因此而生成第二個數(shù)組。
對于過程中的數(shù)組范圍,可以使用 ReDim 語句去改變它的維數(shù),去定義元素的數(shù)目以及每個維數(shù)的底層綁定。每當需要時,可以使用 ReDim 語句去更改動態(tài)數(shù)組。然而當做這個動作時,數(shù)組中存在的值會丟失。若要保存數(shù)組中原先的值,則可以使用 ReDim Preserve 語句來擴充數(shù)組。例如,下列的語句將 varArray 數(shù)組擴充了10 個元素,而原本數(shù)組中的當前值并沒有消失掉。
ReDim Preserve varArray(UBound(varArray) + 10)
注意:
當對動態(tài)數(shù)組使用 Preserve 關(guān)鍵字時,只可以改變最后維數(shù)的上層綁定,而不能改變維數(shù)的數(shù)目。

11.3.5 過程及其調(diào)用
11.3.5.1 Function 過程
Function 過程是一系列由 Function 和 End Function 語句所包含起來的 Visual Basic 語句。Function 過程和 Sub 過程很類似,但函數(shù)可以返回一個值。Function 過程可經(jīng)由調(diào)用者過程通過傳遞參數(shù),例如常數(shù)、變量、或是表達式等來調(diào)用它。如果一個 Function 過程沒有參數(shù),它的 Function 語句必須包含一個空的圓括號。函數(shù)會在過程的一個或多個語句中指定一個值給函數(shù)名稱來返回值。
在下面的示例中,Celsius 函數(shù)會根據(jù)華氏溫度來計算攝氏溫度。當 Main 過程調(diào)用此函數(shù)時,會有一包含參數(shù)值的變量傳遞給此函數(shù)。而計算的結(jié)果會返回到調(diào)用的過程,并且顯示在一個消息框中。
Sub Main()
temp = Application.InputBox(Prompt:= _
"Please enter the temperature in degrees F.",
Type:=1)
MsgBox "The temperature is " Celsius(temp) "
degrees C."
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

11.3.5.2 Sub 過程
Sub 過程是一系列由 Sub 和 End Sub 語句所包含起來的 Visual Basic 語句,它們會執(zhí)行動作卻不能返回一個值。Sub 過程可有參數(shù),例如常數(shù)、變量、或是表達式等來調(diào)用它。如果一個 Sub 過程沒有參數(shù),則它的 Sub 語句必須包含一個空的圓括號。
下面 Sub 過程中,每一行都有注釋來解釋它的作用:

'聲明過程命名為 GetInfo
'該 Sub 過程沒有參數(shù)
Sub GetInfo()
'聲明字符串變量命名為 answer
Dim answer As String
'指定 InputBox 函數(shù)的返回值給 answer
answer = InputBox(Prompt:="What is your name?")
'條件 If...Then...Else 語句
If answer = Empty Then
'調(diào)用 MsgBox 函數(shù)
MsgBox Prompt:="You did not enter a name."
Else
'MsgBox 函數(shù)與 answer 變量連接。
MsgBox Prompt:="Your name is " answer
'結(jié)束 If...Then...Else 語句
End If
'結(jié)束 Sub 過程
End Sub

11.3.5.3 屬性過程
屬性過程是一系列的 Visual Basic 語句,它允許程序員去創(chuàng)建并操作自定義的屬性。屬性過程可以用來為窗體,標準模塊,以及類模塊創(chuàng)建只讀屬性??杀挥脕碓诖a中代替 Public 變量,當設(shè)置屬性值時上述動作應(yīng)被執(zhí)行。
與 Public 變量不同,在對象瀏覽器中屬性過程會有一些幫助字符串指定給自定義的屬性。
當創(chuàng)建一個屬性過程時,它會變成此過程所包含的模塊的一個屬性。Visual Basic 提供下列三種類型的 Property 過程:
Property Let 用來設(shè)置屬性值的過程。
Property Get 用來返回屬性值的過程。
Property Set 用來設(shè)置對對象引用的過程。
聲明屬性過程的語法如下所示:
[Public | Private] [Static] Property {Get | Let | Set}
propertyname_ [(arguments)] [As type]
statements
End Property
屬性過程通常是成對使用的:Property Let 與 Property Get 一組,而 Property Set 與 Property Get 一組。單獨聲明一個 Property Get 過程就像聲明只讀屬性。三個 Property 過程一起使用時,只有對 Variant 變量有用,因為只有 Variant 才能包含一個對象或其他數(shù)據(jù)類型的信息。Property Set 本意是使用在對象上;而 Property Let 則不是。
在 Property 過程聲明中所需要的參數(shù)如下:
Property Get Property Get propname(1, ..., n) As type
Property Let Property Let propname(1, ..., n, n+1)
Property Set Property Set propname(1, ..., n, n+1)
在具有相同名稱屬性過程中,從第一個到最后一個參數(shù)(1, ..., n)都必須共享相同的名稱與數(shù)據(jù)類型。
Property Get 過程聲明時所需的參數(shù)比相關(guān)的 Property Let 以及 Property Set 聲明少一個。Property Get 過程的數(shù)據(jù)類型必須與相關(guān)的 Property Let 以及 Property Set 聲明中的最后 (n+1)個參數(shù)的類型相同。例如,如果聲明下列的 Property Let 過程,則 Property Get 聲明所使用參數(shù)的名稱與數(shù)據(jù)類型必須同 Property Let 過程中所用的一樣。

Property Let Names(intX As Integer, intY As Integer,
varZ As Variant)
' 執(zhí)行語句.
End Property
Property Get Names(intX As Integer, intY As Integer)
As Variant
' 執(zhí)行語句.
End Property
在 Property Set 聲明中,最后一個參數(shù)的數(shù)據(jù)類型必須是對象類型或是 Variant。

11.3.5.4 調(diào)用 Sub 以及 Function 過程
從其他過程調(diào)用一個 Sub 過程時,必須鍵入過程名稱以及任何需要的參數(shù)值。而 Call 語句并不需要,不過若使用它,則任何參數(shù)必須以括號括起來。
可以使用 Sub 過程去組織其他的過程,因此可以較容易地了解并調(diào)試它們。在下面的示例中,Sub 過程 Main 傳遞參數(shù)值 56 去調(diào)用 Sub 過程 MultiBeep。運行 MultiBeep 后,控件返回 Main,然后 Main 調(diào)用 Sub 過程 Message。Message 顯示一個信息框;當按“確定”鍵時,控件會返回 Main,接著 Main 退出執(zhí)行。

Sub Main()
MultiBeep 56
Message
End Sub
Sub MultiBeep(numbeeps)
For counter = 1 To numbeeps
Beep
Next counter
End Sub
Sub Message()
MsgBox "Time to take a break!"
End Sub
1.調(diào)用具有多個參數(shù)的 Sub 過程
下面的示例展示了調(diào)用具有多個參數(shù)的 Sub 過程的兩種不同方法。當?shù)诙握{(diào)用 HouseCalc 時,因為使用 Call 語句所以需要利用括號將參數(shù)括起來。

Sub Main()
HouseCalc 99800, 43100
Call HouseCalc(380950, 49500)
End Sub
Sub HouseCalc(price As Single, wage As Single)
If 2.5 * wage = 0.8 * price Then
MsgBox "You cannot afford this house."
Else
MsgBox "This house is affordable."
End If
End Sub
在調(diào)用 Function 過程時使用括號。
為了使用函數(shù)的返回值,必須指定函數(shù)給變量,并且用括號將參數(shù)封閉起來;如下示例所示:
Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3")
如果不在意函數(shù)的返回值,可以用調(diào)用 Sub 過程的方式來調(diào)用函數(shù)。如下面示例所示,可以省略括號,列出參數(shù)并且不要將函數(shù)指定給變量:
MsgBox "Task Completed!", 0, "Task Box"
注意在上述例子中若包含括號,則語句會導(dǎo)致一個語法錯誤。
2.傳遞命名參數(shù)
Sub 或 Function 過程中的語句可以利用命名參數(shù)來傳遞值給被調(diào)用的過程。參數(shù)有兩種傳遞方式:按值來傳遞和按地址來傳遞。按值傳遞只是傳遞參數(shù)的一個副本,在函數(shù)內(nèi)建立一個同參數(shù)類型及內(nèi)容一樣的變量,在過程體內(nèi)部參數(shù)對參數(shù)所作的改變不會影響到實際參數(shù);按地址傳遞則不然,它傳遞的是實際參數(shù)的地址,過程中所有對參數(shù)的改變都將影響到實際參數(shù)”。命名參數(shù)的組成是由參數(shù)名稱緊接著冒號(:=)以及等號,然后指定一個值給參數(shù)。
下面的示例使用命名參數(shù)來調(diào)用不具返回值的 MsgBox 函數(shù)。
MsgBox Title:="Task Box", Prompt:="Task Completed!"
下面的示例使用命名參數(shù)調(diào)用 MsgBox 函數(shù)。將返回值指定給變量 answer3。
answer3 = MsgBox(Title:="Question 3", _
Prompt:="Are you happy with your salary?", Buttons:=4)

11.3.5.5 調(diào)用屬性過程
表11-2 列出了調(diào)用屬性過程的語法。

當調(diào)用一個 Property Let 或 Property Set 過程時,總是會有一個參數(shù)出現(xiàn)在等號(=)的右邊。
當用多個參數(shù)聲明一個 Property Let 或 Property Set 過程時, Visual Basic 傳遞調(diào)用的右邊參數(shù),給 Property Let 或 PropertySet 聲明中的最后一個參數(shù)。例如,圖11-18 顯示了 Property 過程調(diào)用中的參數(shù)與 Property Let 聲明中的參數(shù)的關(guān)系:

實際上,將屬性過程與多個參數(shù)合用只有在創(chuàng)建屬性的數(shù)組時才會使用。
您可能感興趣的文章:
  • excel vba 高亮顯示當前行代碼
  • VBA 瀏覽文件夾對話框調(diào)用的幾種方法
  • Excel VBA連接并操作Oracle
  • vba 獲取PPT幻燈片中的所有標題的代碼
  • VBA中連接SQLSERVER數(shù)據(jù)庫例子
  • VBA解決Windows空當接龍的617局

標簽:山西 長沙 山西 喀什 濟南 安康 海南 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標題《VBA 編程基礎(chǔ)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    竹溪县| 施甸县| 民县| 黄浦区| 偏关县| 铜鼓县| 宜昌市| 乌鲁木齐县| 南平市| 宁波市| 庆安县| 满城县| 榕江县| 南溪县| 绥滨县| 北辰区| 林周县| 瑞安市| 静安区| 新竹县| 金寨县| 岚皋县| 无极县| 宁明县| 宁强县| 秦皇岛市| 庆云县| 金坛市| 开化县| 清原| 托里县| 丰都县| 扶风县| 北碚区| 桐庐县| 定边县| 绿春县| 宝清县| 德兴市| 长子县| 邵东县|