传递function_Excel VBA解读(132): 调用Function过程的4种方式
学习Excel技术,关注微信公众号:
excelperfect
前面的几篇文章讲解了Function过程的语法以及Function过程的优势和一些细节,也穿插使用了调用Function过程的不同方式。本文主要总结了调用Function过程的4种方式:
从另一个过程中调用Function过程
在VBE的“立即窗口”中调用Function过程
在工作表公式中调用Function过程
在设置条件格式时所使用的公式中调用Function过程
从另一个过程中调用Function过程
在组织程序代码时,通常将重复使用的代码或通用的功能放置在单独的过程中,供其他过程调用。同样,可以从其他过程中调用Function过程,调用方式与调用内置函数相同。
例如,在编写代码时,我们经常要判断工作簿中是否存在特定的工作表,可以编写一个自定义函数来判断:
'检查工作簿中是否存在指定名称的工作表
'参数strName: 要检查的工作表名称
'参数wb: 可选,包含工作表的工作簿名称
Function HasSheet(strName AsString, _
Optional wb As Workbook) As Boolean
Dim wks As Worksheet
If wb Is Nothing Then
Set wb = ActiveWorkbook
End If
On Error Resume Next
HasSheet = CBool(Not wb.Sheets(strName) Is Nothing)
On Error GoTo 0
End Function
在另一过程test中,可以先调用HasSheet函数判断指定的工作表是否存在,然后再进行相应的操作,如下代码所示:
Sub test()
Dim strSheetName As String
strSheetName = "Sheet1"
'判断工作表是否存在
If HasSheet(strSheetName) Then
'操作代码
Else
MsgBox "工作表" & strSheetName &"不存在!"
End If
End Sub
除了直接使用自定义函数名调用该函数外,还可以使用Application对象的Run方法来调用,如下面的代码所示:
Sub test()
Dim strSheetName As String
Dim SheetExists As Boolean
strSheetName = "Sheet9"
'判断工作表是否存在
SheetExists = Application.Run("HasSheet","strSheetName")
If SheetExists Then
'操作代码
Else
MsgBox "工作表" & strSheetName &"不存在!"
End If
End Sub
注意,Run方法的第一个参数是要调用的函数的名称,后面的参数为自定义函数的参数。
在VBE的“立即窗口”中调用Function过程
可以使用“立即窗口”,方便地进行Function过程代码测试,如下图1所示。
图1
在工作表公式中调用Function过程
通常,可以像内置工作表函数一样,在工作表公式中调用Function过程。例如,下面的代码用来获取所传递的参数中的数字:
'获取文本字符串中的数字
Function GetNum(rng As String)
Dim lngLen As Long
Dim i As Long, result
lngLen = Len(rng)
For i = 1 To lngLen
If IsNumeric(Mid(rng, i, 1)) Then
result = result & Mid(rng, i,1)
End If
Next i
GetNum = result
End Function
在工作表中使用GetNum函数获取单元格中所含的数字,如下图2所示。
图2
然而,如果这个自定义函数不在当前工作簿中,并且自定义函数所在的工作簿是打开的,则可以使用:
=工作簿名!GetNum(单元格)
来调用该自定义函数。
如果自定义函数所在的工作簿没有打开,则需要在VBE的“工具——引用”中来引用自定义函数所在的工作簿,这样才能使用该自定义函数。此外,还可以创建加载项。
在设置条件格式时所使用的公式中调用Function过程
可以在设置条件格式时使用自定义函数。例如,下面的自定义函数判断参数单元格中是否包含公式:
Function FormulaExists(rng) AsBoolean
FormulaExists = rng.HasFormula
End Function
这样,如果要突出显示工作表中包含公式的单元格,可以先选择所需要设置条件格式的单元格区域,然后创建条件格式规则,如下图3所示。
图3
正如上图3所示,在设置条件格式的公式中包含了自定义函数FormulaExists。
传递function_Excel VBA解读(132): 调用Function过程的4种方式相关推荐
- 【转】java调用http接口的几种方式总结
java调用http接口的几种方式总结 本文参考: https://blog.csdn.net/fightingXia/article/details/71775516 https://www.cnb ...
- Http调用第三方接口的两种方式实例《超详细!!!》***
Http调用第三方接口的两种方式<超详细!!!>* 最近在公司做一些调用第三方接口的工作,查阅了一部分的资料和向前辈以及朋友请教,完成了第三方接口的调用,其实主要是通过第三方提供的文档,完 ...
- java调用restful接口_Java调用RESTful接口的几种方式
前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate 服务端代码如下: 服务端接口请求的URL:h ...
- 调用第三方接口的三种方式
调用第三方接口到三种方式 链接 Hutool 依赖 <dependency><groupId>cn.hutool</groupId><artifactId&g ...
- 主程序调用动态库的两种方式,动态库调用主程序的函数
主程序调用动态库有两种方式,即隐式调用和显式调用. 隐式调用就是共享方式,程序一开始运行就调进去.在链接时候用如下的方式链接动态库:gcc -o main main.o -L./lib -ltest( ...
- 在python里调用C函数的三种方式
一个python项目快速开发完以后,常常针对瓶颈进行优化,其中一种方式就是对于性能至关重要的部分,使用C重写,这已经是一种最佳实践.如果整个项目完全使用C,开发效率就没有保障.python运行环境(C ...
- python 调用js类_Python 调用 JS 常用的4种方式,带你学会如何解密
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于AirPython ,作者星安果 1. 前言 日常 Web 端爬虫过 ...
- 多线程总结之旅(12):跨线程调用控件的几种方式
本来是写完线程池就结束多线程总结之旅系列的,但是想想平时在项目中用到线程仅仅不够的,为什么这么说呢?举个例子:我们有一个函数,它的功能就是加载数据,然后绑定到datagridview.现在我们开启一个 ...
- jquery调用click事件的三种方式
第一种方式: $(document).ready(function(){$("#clickme").click(function(){alert("Hello World ...
最新文章
- 细粒度图像分割 (FGIS)
- 面试必备的C++知识(未完待续)
- Unity 游戏开发技巧集锦之创建自发光材质
- 2021甘肃高考艺考成绩查询,2021甘肃艺术统考/联考成绩查询时间及入口
- 如何创建并运行 java 线程
- 【论文】引用格式 NoteExpress管理文献
- 概念设计师凌云:《蜘蛛侠:平行宇宙》和《证人》美术浅析
- python制作视频播放器_Python应用03 使用PyQT制作视频播放器
- ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安装oracle xe 11 x86_64
- 通过Dapr实现一个简单的基于.net的微服务电商系统
- ajax如何处理程序设计,Struts与Ajax高级程序设计
- python从菜鸟到高手 pdf 百度云_Python从菜鸟到高手(4):导入Python模块
- Linux系统与网络服务管理技术大全(第2版)
- LA 4794 - Sharing Chocolate dp
- Linux中查看bz2压缩文件大小,Linux bz2文件解压与压缩之bzip2命令
- mimics能导出什么格式_mimics教程
- 想自学PLC编程该按什么步骤来?
- 高盛为什么认为中国AI领域将超越美国?
- 零基础想要做好人物角色模型,先了解人体的构造!快来康康
- Mysql循环插入语句
热门文章
- c++ qt获取电脑的内存_QT开发(十四)——QT绘图系统
- python0x80070643_Win10提示Python 0x80070643安装时发生严重错误
- iphonex如何关机_iPhoneX怎么关机 iPhoneX如何强制重启【详细步骤】
- 05And06VM和Linux安装
- keil复制代码乱码_成都控制器开发:容易忽略!用KEIL编码汉字也会有BUG
- vue人员轨迹_Vue项目(vuecli3.0搭建)集成高德地图实现路线轨迹绘制
- pytorch 模型同一轮两次预测结果不一样_2020年的最新深度学习模型可解释性综述[附带代码]...
- Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server
- android 调用系统自带文件管理器_编写使用Android 系统自带的文字转语音代码
- numpy pandas 查找在一个区间中的值