分享

VBA

 Excel实用知识 2021-11-20

在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(年,月,日)

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多