Excel 在VBA中怎么调用公式 Excel excel VBA怎么调用函数

作者&投稿:宏明 (若有异议请与网页底部的电邮联系)
按说Excel函数应该只在工作表中应用,好像VBA不可以用的,但实际上许多Excel函数具有很高的效率,如果能把两者结合起来的话,肯定是事半功倍!但说实在话,开始时我总是想着如何从VBA的角度来解决问题,当初Excel函数这块掌握不较少,导致现在一想才发现自己真的很浅薄!不过回过头来想,如果可以掌握如何在VBA程序中调用Excel函数的话,那事情不是更好吗!!!

所以今天要解决的问题是:如何在VBA程序中调用Excel函数?终极目标就是把Excel工作表中的的所有函数都放到VBA中进行调用,完全掌握它们的种种用法.

Sub 调用clean函数()
'如何调用clean(text)函数 用途:删除指定文本中所有非打印符号,保证数据的有效性.
Range("B1").Value = Application.WorksheetFunction.Clean("@diahdfias")
Range("B2").Value = "'" & Application.WorksheetFunction.Clean(Range("A1").Value)
'文本是要从中删除不能打印字符的任何工作表信息,注意第2行命令,clean中的为文本格式,如果在工作表函数中应为如clan(A1),表示在把A1单元格中非打印字符删掉,但如在VBA中调用,就不能这样写,
'必须写成range("A1").value的形式才可以.如果也写成range(A1)的形式,那么将不会返回任何数据!!
End Sub

Sub 关于sum函数的调用举例()
Application.DisplayAlerts = False
Worksheets("sheet1").Activate
Dim totalR As Integer
Dim mycell As Range
totalR = Range("C65536").End(xlUp).Row
Dim i As Integer
For i = 2 To totalR
Set mycell = Range(Cells(i, 4), Cells(i, 11)) '先设置好mycell的单元格区域,正好可以在sum中使用,不然的话,下一语句中根本无法使用,并且这种种法
'还可以突破sum函数只能对30个数相加的限制.
Range(Cells(i, 12), Cells(i, 12)).Value = Application.WorksheetFunction.Sum(mycell)
Next i
End Sub

你是要运行 EXCEL工作表函数还是要给在VBA中给单元格写公式
如果是要用函数
applivation.worksheetfunction.
如果是要给格写公式 比如 B4=A1+1
请用 range("B4").Formula = "=A1+1"

excel宏运行 在线讲解

如何用VBA在Excel中写入公式~

用VBA在Excel中写入公式的方法:
把提取字符的公式写入sheet2单元格
Sub aa()
Sheet2.Range("A1").Formula = "=left(sheet1!A1,5)"
End Sub
直接把结果写入sheet2单元格
sub aa()
sheet2.range("A1").value=left(sheet1.range("A1").value,5)
end sub
VBA主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

扩展资料:
VBA的相关要求规定:
1、VBA是基于Visual Basic for Windows 发展而来的。与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。
2、VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。
3、VB是独立的开发工具,不需要依附于任何其他应用程序,有自己完全独立的工作环境和编译、链接系统。VBA却没有自己独立的工作环境,必须依附于某一个主应用程序,VBA专门用于Office的各应用程序中,如Word、 Excel、 Access等。在 Access中,可以通过VBA编写模块来满足特定的需要。
参考资料来源:百度百科-VBA

一、利用单元格公式返回值
Sub t5()
Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)") '宏表函数直接把公式表达式转化为数值
Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")
End Sub

二、借用工作表函数
Sub t6()
Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")
End Sub'

三、利用VBA函数
Sub t7()
Range("C20") = VBA.InStr(Range("a20"), "E")
End Sub