在Excel里有很多函數使用起來很方便,譬如:sum、average、min、max。
但是工作表函數是不能在宏代碼里直接使用的,它們和vba語言中的函數是不一樣的;與之相對應,Vba中的函數例如val,mid在工作表里也不能通用。
所以在vba語言里調用工作表函數,例如:
1. 讓一個變量得到單元格A1到B5的總和(變量設為X) X=SUM(RANGE("A1:B5"))的寫法明顯是行不通的。
2. 正確寫法是:
1 Sub 引用工作表函數() 2 Dim x% 3 x = Application.WorksheetFunction.Sum(Range("A1:B5")) 4 End Sub
也就是說必須通過 Application 對象的 Worksheetfunction 屬性來間接調用工作表函數!
以下三種方法都對:
1 '借用工作表函數 2 Sub 運用工作表函數() 3 MsgBox Application.WorksheetFunction.CountIf(range("a1:a10"), "鋼筆") 4 MsgBox WorksheetFunction.CountIf(range("a1:a10"), "鋼筆") 5 MsgBox Application.CountIf(range("a1:a10"), "鋼筆") 6 End Sub
同時,也可以采用下面的方式:
1 Sub 帶工作表函數的計算() 2 Dim i As Integer 3 For i = 1 To 10 4 Sheet1.Cells(i, 4) = "=sum(a" & i & ":b" & i & ")" 5 Next i 6 End Sub
1 Sub 公式帶引號的計算() 2 Cells(12, 1) = "=COUNTIF(A1:A10,"">9"")" 3 Cells(12, 2) = "=sum(INDIRECT(""a1:a10""))" 4 End Sub