在VBA中引用excel的函數

在 Visual Basic 語句中可以使用大多數 Microsoft Excel 工作表函數。若要查看可以使用的工作表函數列表,請參閱 Visual Basic 可使用的工作表函數列表。

注意 一些工作表函數在 Visual Basic 中是不實用的。例如:Concatenate 函數就不實用,因爲在 Visual Basic 中可使用 & 運算符來連接多個文本值。

從 Visual Basic 中調用工作表函數
在 Visual Basic 中,通過 WorksheetFunction 對象可使用 Microsoft Excel 工作表函數。

以下 Sub 過程使用 Min 工作表函數來決定在某個單元格區域中的最小值。首先,將變量 myRange 聲明爲 Range 對象,然後將其設置爲 Sheet1 上的 A1:C10 單元格區域。指定另一個變量 answer 爲對 myRange 應用 Min 函數的結果。最後,answer 的值就被顯示在消息框中。

Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub
如果您使用的工作表函數需要一個單元格區域引用作爲參數,則必須指定一個 Range 對象。例如:您可以用 Match 工作表函數搜索單元格區域。可以在工作表單元格中輸入公式,如“=MATCH(9,A1:A10,0)”。但是,您應在 Visual Basic 過程中指定一個 Range 對象來獲取相同的結果。

Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub
注意 Visual Basic 函數不使用 WorksheetFunction 識別符。函數可能和 Microsoft Excel 的函數同名但作用各異。例如:Application.WorksheetFunction.Log 和 Log 將返回不同的值。

在單元格中插入工作表函數
若要在單元格中插入工作表函數,請指定函數作爲相應的 Range 對象的 Formula 屬性值。以下示例中,將 RAND 工作表函數(可生成隨機數)賦給了活動工作簿中 Sheet1 上 A1:B3 單元格區域的 Formula 屬性。

Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
示例
本示例使用工作表函數 Pmt 來計算住宅抵押貸款的支付額。請注意,本示例使用的是 InputBox 方法,而不是 InputBox 函數,因此該方法可以執行類型檢查。Static 語句使 Visual Basic 保留三個變量的值;當下次運行該程序時,這些變量將顯示爲默認值。

Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")
發佈了24 篇原創文章 · 獲贊 3 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章