学习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种方式相关推荐

  1. 【转】java调用http接口的几种方式总结

    java调用http接口的几种方式总结 本文参考: https://blog.csdn.net/fightingXia/article/details/71775516 https://www.cnb ...

  2. Http调用第三方接口的两种方式实例《超详细!!!》***

    Http调用第三方接口的两种方式<超详细!!!>* 最近在公司做一些调用第三方接口的工作,查阅了一部分的资料和向前辈以及朋友请教,完成了第三方接口的调用,其实主要是通过第三方提供的文档,完 ...

  3. java调用restful接口_Java调用RESTful接口的几种方式

    前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate 服务端代码如下: 服务端接口请求的URL:h ...

  4. 调用第三方接口的三种方式

    调用第三方接口到三种方式 链接 Hutool 依赖 <dependency><groupId>cn.hutool</groupId><artifactId&g ...

  5. 主程序调用动态库的两种方式,动态库调用主程序的函数

    主程序调用动态库有两种方式,即隐式调用和显式调用. 隐式调用就是共享方式,程序一开始运行就调进去.在链接时候用如下的方式链接动态库:gcc -o main main.o -L./lib -ltest( ...

  6. 在python里调用C函数的三种方式

    一个python项目快速开发完以后,常常针对瓶颈进行优化,其中一种方式就是对于性能至关重要的部分,使用C重写,这已经是一种最佳实践.如果整个项目完全使用C,开发效率就没有保障.python运行环境(C ...

  7. python 调用js类_Python 调用 JS 常用的4种方式,带你学会如何解密

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于AirPython ,作者星安果 1. 前言 日常 Web 端爬虫过 ...

  8. 多线程总结之旅(12):跨线程调用控件的几种方式

    本来是写完线程池就结束多线程总结之旅系列的,但是想想平时在项目中用到线程仅仅不够的,为什么这么说呢?举个例子:我们有一个函数,它的功能就是加载数据,然后绑定到datagridview.现在我们开启一个 ...

  9. jquery调用click事件的三种方式

    第一种方式: $(document).ready(function(){$("#clickme").click(function(){alert("Hello World ...

最新文章

  1. 细粒度图像分割 (FGIS)
  2. 面试必备的C++知识(未完待续)
  3. Unity 游戏开发技巧集锦之创建自发光材质
  4. 2021甘肃高考艺考成绩查询,2021甘肃艺术统考/联考成绩查询时间及入口
  5. 如何创建并运行 java 线程
  6. 【论文】引用格式 NoteExpress管理文献
  7. 概念设计师凌云:《蜘蛛侠:平行宇宙》和《证人》美术浅析
  8. python制作视频播放器_Python应用03 使用PyQT制作视频播放器
  9. ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安装oracle xe 11 x86_64
  10. 通过Dapr实现一个简单的基于.net的微服务电商系统
  11. ajax如何处理程序设计,Struts与Ajax高级程序设计
  12. python从菜鸟到高手 pdf 百度云_Python从菜鸟到高手(4):导入Python模块
  13. Linux系统与网络服务管理技术大全(第2版)
  14. LA 4794 - Sharing Chocolate dp
  15. Linux中查看bz2压缩文件大小,Linux bz2文件解压与压缩之bzip2命令
  16. mimics能导出什么格式_mimics教程
  17. 想自学PLC编程该按什么步骤来?
  18. 高盛为什么认为中国AI领域将超越美国?
  19. 零基础想要做好人物角色模型,先了解人体的构造!快来康康
  20. Mysql循环插入语句

热门文章

  1. c++ qt获取电脑的内存_QT开发(十四)——QT绘图系统
  2. python0x80070643_Win10提示Python 0x80070643安装时发生严重错误
  3. iphonex如何关机_iPhoneX怎么关机 iPhoneX如何强制重启【详细步骤】
  4. 05And06VM和Linux安装
  5. keil复制代码乱码_成都控制器开发:容易忽略!用KEIL编码汉字也会有BUG
  6. vue人员轨迹_Vue项目(vuecli3.0搭建)集成高德地图实现路线轨迹绘制
  7. pytorch 模型同一轮两次预测结果不一样_2020年的最新深度学习模型可解释性综述[附带代码]...
  8. Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server
  9. android 调用系统自带文件管理器_编写使用Android 系统自带的文字转语音代码
  10. numpy pandas 查找在一个区间中的值