【原创】VBA学习笔记(18) VBA的自定义函数 / 过程,到底能不能改变EXCEL单元格内容?(需要整理)

您所在的位置:网站首页 execl如何自定义函数 【原创】VBA学习笔记(18) VBA的自定义函数 / 过程,到底能不能改变EXCEL单元格内容?(需要整理)

【原创】VBA学习笔记(18) VBA的自定义函数 / 过程,到底能不能改变EXCEL单元格内容?(需要整理)

2024-07-16 03:01| 来源: 网络整理| 查看: 265

一 自定义函数1.1 什么是EXCEL 的自定义函数VBA里用户自己写了一些函数,这些非 EXCEL 和 VBA 内置的函数,也可以在EXCEL直接使用VBA的函数在 EXCEL里如何使用?单元格里输入 = 自定义函数名  即可 

1.2 明确概念: 函数错误 Vs 函数返回值错误函数错误:是 语法错误,允许错误,逻辑错误等等函数返回值错误:是 函数调用后,返回值报错了。(不一定是函数本身的错误) 

 

二 自定义函数详情总结 

2.1 自定义函数总结1---自定义函数的命名需要注意,有时候,自定义函数不正确是因为 函数命名 有问题2---自定义函数在excel里使用,最好有返回值!     没有的话也可以,会返回默认值,如03---自定义函数,在excel里使用,要注意数据类型是否有问题,比如要求是int的函数,无法处理字符串!(exce l或 VBA的内置函数也一样,比如sum 也无法处理 字符串,sum("a") 也会报错)4---自定义函数 

 

2.2 自定义函数问题1:自定义函数命名有玄机,可能造成问题下面2个自定义函数,就函数名不同实测在EXCEL里输入=SUM2(A1,B1)    返回值会报错,怀疑和 系统内置的函数名有些冲突 sum2?=mysum2(A1,B1)

Function sum2(a As Integer, b As Integer) '怀疑函数名不能用sum2 = a + bEnd Function

Function mysum2(a As Integer, b As Integer)'Dim a As Integer'Dim b As Integermysum2 = a + bEnd Function 

2.3 自定义函数问题2: 数据类型要匹配,否则可能返回错误自定义函数,也要注意,处理的数据的数据类型,如果不合适可能报错这一点和EXCEL的内置函数一样虽然sum之类的函数无法处理string但string 就可以把 5这样的 integer当做字符串处理没问题

Function merge1(m As String, n As String)merge1 = m & nEnd Function

Function cube1(a)cube1 = a * a * aEnd Function

 

2.4 自定义函数问题3:自定义函数不一定有返回值自定义函数里没定义 function_name=  赋值,返回,就会返回空值,可以试1个啥也不做的函数相当于在一个EXCEL 的单元格里引用 自定义函数,因为自定义函数没有返回值,所以单元格的值就显示 #n/a #value下面这个是因为试图改变单元格的值引起的报错Function mysum1()mysum1 = Cells(1, 1).Value + Cells(1, 2).ValueEnd Function

Function mysum3() '函数本身在VBA里OK,但这个当自定义函数使用,函数本事没事,但返回值会报错Cells(10, 1).Value = Cells(1, 1).Value + Cells(1, 2).ValueEnd Function

Function mysum4() '改变单元格的值,会返回报错Cells(10, 1).Value = 100End Function

Function mysum5() '没返回值,不会返回报错,但是会返回0End Function 

用function 只干改变EXCEL单元格的值也不行

可能是没有函数返回值引起的问题?NO还是因为改变EXCEL的单元格的值,引起的Function mysum4() '这样也会返回错误Cells(10, 1).Value = 100End Function 2.5 自定义函数问题4:自定义函数不能改变EXCEL的单元格里的值?自定义函数,在EXCEL运行也可以改变excel里的单元格的值啊?可以吗?--不行 Function mysum3()mysum3 = Cells(1, 1).Value + Cells(1, 2).Value'Cells(10, 1).Value = 100 '这句如果不注释掉,带上就返回错误,真TMDRem "function可以改变EXCEL的单元值?--现在测试还是不能啊!!!"

End Function 

 

三  过程是可以的?3.1 function不能的,过程可以做哪些?过程可以改变EXCEL的单元格的值?--可以而且是需要点击运行的 

3.2   function的可以的,sub哪些不可以?过程不能有返回值,sub不能在excel里当自定义函数只有使用,只能 点击运行等 

四  原因呢? 

但空的可以增加,删除?增删改不能改? 但也能函数处理

这个是为啥?

EXCEL 数据  和VBA代码 隔开安全?

 

 

五 例外呢看不懂的牛逼帖子

http://club.excelhome.net/thread-338141-1-1.html

 

 

参考的文档 和继续学习https://zhidao.baidu.com/question/432290355.html

http://club.excelhome.net/thread-1143692-1-1.html

 

这2个需要学习

https://blog.csdn.net/hpdlzu80100/article/details/80795846

http://club.excelhome.net/thread-338141-1-1.html————————————————版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/xuemanqianshan/java/article/details/89130115



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3