本节课为VBA学习当中的第十课,在VBA当中怎么调用VBA内置函数,自带函数及怎么样构建自己需要的函数。
一:VBA内置函数调用:
与上一接运用VBA代码构建函数不同,内置函数为使用VBA内部自带的函数。以求出类型为钢笔的个数举例,调用内置的countif函数方法有以下三种:
方法1:=Application.WorksheetFunction.CountIf(range('a2:a11'), '钢笔')
方法2:=WorksheetFunction.CountIf(range('a2:a11'), '钢笔')
方法3:=Application.CountIf(range('a2:a11'), '钢笔')
注意点:方法1为完整的调用函数。2和三位缩写形式。
效果如下:
代码如下:
Sub 内置函数调用方法1()
Sheet1.Cells(3, 4) = Application.WorksheetFunction.CountIf(Range('A2:A11'), '钢笔') '借用内置函数countif >>D4=countif(A2:A11,'钢笔')
End Sub
Sub 内置函数调用方法2()
Sheet1.Cells(6, 4) = WorksheetFunction.CountIf(Range('A2:A11'), '钢笔') '借用内置函数countif >>D6=countif(A2:A11,'钢笔')
End Sub
Sub 内置函数调用方法3()
Sheet1.Cells(9, 4) = Application.CountIf(Range('A2:A11'), '钢笔') '借用内置函数countif >>D9=countif(A2:A11,'钢笔')
End Sub
二:VBA自带函数的使用:
除了VBA内置的函数,代码中自身有些函数就是有的,如格式化format,功能相当于excel中的TEXT。举例:将A14数字格式的日期转化为:年/月/日,方法有以下两种:
方法1:=VBA.Format(Range('b1'), 'yyyy年m月d日')
方法2:=Format(Range('b1'), 'yyyy年m月d日')
注意点:方法1为完整写法,2为缩写的形式。VBA可以去掉。
效果如下:
代码如下:
'VBA自带函数的使用。
Sub 自带函数使用方法1()
Sheet1.Range('b14') = VBA.Format(Range('A14'), 'yyyy年M月D日') '将A14单元格的数字日期转化为年/月/日的形式
End Sub
Sub 自带函数使用方法2()
Sheet1.Range('b17') = Format(Range('A14'), 'yyyy年M月D日') '将A14单元格的数字日期转化为年/月/日的形式
End Sub
三:VBA中如何构建自己的函数:
与上面讲述的方法不同,当我们觉得自带函数及内置函数都比较麻烦的时候,我们可以使用自己构建的函数,效果与excel定义名称相似。举例:自定义函数求出身份证号对应的性别。效果如下:
代码如下:
Function sex(rng As Range) '定义函数sex 定义变量RNG
sex = IIf(Mid(rng, 15, 3) Mod 2, '男', '女') '与工作表函数一样,首先用mid函数从身份证15位开始取3位,然后除以2,用IIF判断,当为1时是男,反之为女。
End Function
注意点:
1、自定义函数需以Function开头,end Function结尾;
2、与工作表IF判断函数不一样的是,VBA中的判断函数为IIF,写法一样。
3、自定义函数的VBA代码必须写到模块当中去,否则会执行为错误值无法调用。
百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆!
来源: http://www.92to.com/bangong/2017/11-24/31665216.html