在 Visual Basic 中使用 Excel 工作表函数

可以在 Visual Basic 语句中使用大多数 Microsoft Excel 工作表函数。 有关可以使用的工作表函数列表,请参阅可用于 Visual Basic 的工作表函数列表

注意

某些工作表函数在 Visual Basic 中没有用。 例如:Concatenate 函数就不实用,因为在 Visual Basic 中可以使用 & 运算符来连接多个文本值。

从 Visual Basic 中调用工作表函数

在 Visual Basic 中,可以通过 WorksheetFunction 对象来使用 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.LogLog 将返回不同的值。

在单元格中插入工作表函数

若要在单元格中插入工作表函数,请指定函数作为相应的 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")

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。