VBA-在VBA中使用公式

Posted xiao-xuan-feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA-在VBA中使用公式相关的知识,希望对你有一定的参考价值。

在VBA中如何使用excel中的函数

  这样Application.WorksheetFunction.  “.”后面就能找到在excel中常用的函数

技术图片

 

 代码

Sub tongji()
Dim k, l, m As Integer
For i = 2 To Sheets.Count
    k = k + Application.WorksheetFunction.CountA(Sheets(i).Range("a:a")) - 1
    l = l + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1
    m = m + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1
Next

Sheet1.Range("d26") = k
Sheet1.Range("d27") = l
Sheet1.Range("d28") = m
End Sub

VBA里使用公式 例如 vlookup 如何找不到 就会报错

Sub chaxun()
Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheet2.Range("a:h"), 5, 0)
End Sub

可以使用 On Error Resume Next 意思是如果这行代码出错了 那么执行下一行代码

Sub chaxun()
Dim i As Integer
On Error Resume Next
For i = 2 To Sheets.Count
    Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:h"), 5, 0)
Next
End Sub

VBA自身函数最后附表查看  VBA中文本函数比较重要

在这里需要注意 

sub ss()

dim l       #如果后面没有定义具体的类型,这个l可以是任意类型

l = inputbox("第几行分裂")    #这时候你输入的数值  但是在 inputbox 接受的是文本 所以 l 在此是文本

l = val(l)    #这个意思是将文本转化成数值   或者  l= l *1  这样也可以

if l = isnumeric(l) =false then  #在vba中判断是否是数值  vab.information.isnumeric

  exit sub

endif

end sub

两个查找函数 使用find函数有个缺点 如果查找不到  代码会崩溃

Sub ss()
Range("a1") = Application.WorksheetFunction.Find("@", Range("a2"))
Range("a1") = VBA.Strings.InStr(Range("a2"), "@")
End Sub

另个vba 函数 split    #split将数据分割成数组  然后从数组中取值

Sub ss()
Range("b2") = Split(Range("a2"), "-")(2)     
End Sub

在excel中的时间函数用date函数来实现

技术图片

 

 在VBA中则是VBA

range("b2") = vba.DateTime.DateSerial(年,月,日)

技术图片

 

 技术图片

 

以上是关于VBA-在VBA中使用公式的主要内容,如果未能解决你的问题,请参考以下文章

VBA代码在数据透视表旁边的列中向下拖动公式

使用 VBA 将 Excel 公式写入单元格

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

列表在VBA代码中转换矩阵表

VBA将单元格内容分配为公式而不是其结果

使用动态单元格引用通过 VBA 应用公式。