自定义函数
taller_2000
不积跬步,无以至千里;不积小流,无以成江海
展开
-
VBA数组动态下标下界
设置下界值,如果没有这行代码,那么下界值为零。这不失为一个方法,但是局限性很大,用户必须要启用“信任对VBA工程对象模型的访问”,否则无法使用。VBA中数组默认下标下界为从零开始,有些同学喜欢下标下界从一开始,这只是编程习惯不同,无对错之分。现有一个VBA自定义函数,参数为下标上界,函数返回值为一维数组,代码较简单,不再逐句讲解。设置保持一致,那么可以取巧的使用检测数组下标下届的方法得到这个设置。大家是否注意到了,第一行代码指定数组下标下届从1开始,但是函数。决定的,此变量的值是Hard Code。原创 2022-09-15 00:08:41 · 1990 阅读 · 0 评论 -
快速判断文件是否存在
提到查找文件通常实现方法都是使用Dir函数,其实VBA中提供了返回指定文件长度(以字节为单位)的函数`FileLen`,利用这个函数也可以实现快速判断文件是否存在。原创 2022-02-02 13:55:54 · 946 阅读 · 0 评论 -
【增强版】快速判断工作簿中是否存在指定工作表
《快速判断工作簿中是否存在指定工作表》介绍了两种方法实现判断工作表是否存在与工作簿中,最近发现有更简单的方法实现,在这里和大家分享一下。示例代码如下。Function blnSheetExist(ByVal strSht As String) As Boolean blnSheetExist = (TypeName(Application.Evaluate(strSht & "!A1")) = "Range")End FunctionSub Demo() Dim aSht原创 2022-02-02 13:54:13 · 1207 阅读 · 2 评论 -
自定义VBA函数(Fucntion)怎样才能只被VBA引用?
实例需求:对于VBA代码实现的自定义函数,希望只能在VBA过程中被调用,而在工作表单元格的公式使用此自定义函数。为啥存在这么奇葩的应用场景呢,其实我也不知道,只能认为存在的就是合理的。通常VBA自定义函数应该写入模块中,这样即可以被其他VBA过程调用,也可以在工作表单元格公式中使用,和内置Excel函数没有区别,不再提供效果截图。原创 2021-09-01 10:56:08 · 696 阅读 · 0 评论 -
你所不知道的Excel自定义函数BUG
使用VBA开发自定义函数,可以弥补Excel内置函数的不足,简化函数公式,但是需要注意实现同样功能,自定义函数的效率远远不如内置函数,所以不要试图重新发明轮子。原创 2021-01-29 01:37:08 · 528 阅读 · 0 评论 -
快速对比数据
实例需求:日常工作中经常需要对比数据,例如如下的参会名单,现在需要对比两届参会名单的异同,100个人的名单,看得老眼昏花也未必能够准确的找出差异。Function strCompare(ByVal Rng1 As Range, ByVal Rng2 As Range) As String Dim strRemove As String, strAdd As String, strKey Dim currDic, newDic, c Set currDic = CreateObj原创 2020-12-21 04:08:48 · 1631 阅读 · 2 评论 -
随心所欲大小写转换自定义函数
无论是在工作表中,还是VBA编程中,经常需要使用英文字母大小写转换功能。Excel函数中提供了`UPPER,LOWER,PROPER`三个函数,VBA中提供了`UCASE,LCASE`两个函数,为什么还要开发类似功能的自定义函数?这并不是重新发明轮子,而是要制造一个功能更完善的轮子也许是一个喷气发动机。原创 2020-04-05 02:30:38 · 760 阅读 · 0 评论 -
Excel列标与列号转换
熟悉Excel操作的用户都只有工作表中列标题可以有列标(字母形式)和列号(数字形式)两种,同样在VBA代码中也会用到这两种不同的表示方式。例如应用C6单元格可以如下几种方式,对于Cells的第二个参数,即可以使用数字列号,也可以使用列标字母,然而对于Range来说参数为字符串,也就是使用列标形式。原创 2019-08-01 11:02:11 · 5165 阅读 · 0 评论 -
使用VBA如何将中文字符转换为区位码
相信有些朋友遇到过,填报一些申请表的时候,需要填写区位码,可是区位码是个什么东西呢?在百度百科中词条如是说: 1980年,为了使每个汉字有一个全国统一的代码,我国颁布了汉字编码的国家标准:GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区...原创 2018-05-09 14:48:04 · 1856 阅读 · 0 评论 -
如何判断工作簿中是否存在某个工作表
开发VBA代码时,经常需要操作工作表对象,但是这个是否存在呢?各种奇葩的用户都会有,所以在代码中一定要先判断然后再进行后续操作,非常可惜的是VBA中并没有提供直接的方法来完成这个判断,只有写一个自定义函数了。Function udfSheetExists(strShtName As String, Optional strWbName As String) As Boolean On ...原创 2018-05-09 11:26:17 · 13703 阅读 · 1 评论