在VBA中引用excel的函式

2021-04-07 13:27:58 字數 1773 閱讀 5902

在 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")

msgbox answer

end sub

如果您使用的工作表函式需要乙個單元格區域引用作為引數,則必須指定乙個 range 物件。例如:您可以用 match 工作表函式搜尋單元格區域。可以在工作表單元格中輸入公式,如「=match(9,a1:a10,0)」。但是,您應在 visual basic 過程中指定乙個 range 物件來獲取相同的結果。

sub findfirst()

.match(9, worksheets(1).range("a1:a10"), 0)

msgbox myvar

end sub

在單元格中插入工作表函式

若要在單元格中插入工作表函式,請指定函式作為相應的 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

(prompt:="loan amount (100,000 for example)", _

default:=loanamt, type:=1)

(prompt:="annual interest rate (8.75 for example)", _

default:=loanint, type:=1)

(prompt:="term in years (30 for example)", _

default:=loanterm, type:=1)

.pmt(loanint / 1200, loanterm * 12, loanamt)

msgbox "monthly payment is " & format(payment, "currency")

VLookUP函式在VBA中的語法

sub vlookup on error resume next for i 2 to 4072 cells i,27 worksheetfunction.vlookup cells i,1 range x2 y6382 2,false next end sub總行數和總列數依然可以用actives...

Excel VBA 在VBA中呼叫函式

excel的表函式也可以直接在vba中直接呼叫執行,具體呼叫格式如下 呼叫方法2 變數物件 vba.表函式 表函式引數 例項 range d8 vba.ucase range a1 a10 value 1 並非所有表函式都可以在vba中予以呼叫,比如trunc,numberstring。表函式if ...

002 對函式的引用 VBA

宣告 本文所有 主要基於office 2016版本編寫而成 對函式的引用 sub function sub procedure first 程式無返回值 scond one 程式只有乙個返回值 call third one,two 程式有兩個或兩個以上的返回值 endsub first msgbox...