VBA中引用工作表函数
在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