ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: opiona

[分享] 关于自定义函数的使用理解及函数集锦

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-9 12:38 | 显示全部楼层
学习了,经典中的经典,非常实用。谢谢楼主分享。

TA的精华主题

TA的得分主题

发表于 2018-7-22 16:44 | 显示全部楼层
本帖最后由 jok22 于 2018-7-22 16:46 编辑

楼主你好,需要帮助,就是把VBA生成二维码做成自定义函数,从本论坛中找到了生成二维码的源代码,但自己水平有限,就是无法改成自定义函数,原贴http://club.excelhome.net/thread-1044486-1-1.html?jdfwkey=qo1jz      ,http://club.excelhome.net/thread-1043020-1-1.html ,不知能否实现,因为比较需要,论坛中有类似的,要不生成有问题,要不使用不方便。拜谢楼主帮助!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-22 16:49 | 显示全部楼层
自定义函数  输出值是什么!?
没有输出值,都是过程!

TA的精华主题

TA的得分主题

发表于 2018-7-23 08:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
来一个,非原创!!!
  1. '本函数是一个find方法的增强函数,结合FindNext和FindPrevious方法,可以返回一组符合条件的单元格的集合;
  2. '本函数返回一个Collection对象,里面储存了找到的单元格;
  3. '本函数有两个必选参数:
  4. '   1.SearchRange 用来存放需要查找的区域;
  5. '   2.FindWhat用来存放需要查找的值;
  6. '其余参数都是可选参数,与Find方法参数相同;
  7. '无论是否查找到单元格,都会返回一个collection对象;
  8. '我们用Collection.Count=0,来判断,没有找到匹配的单元格;
  9. Option Explicit

  10. Function FindPlus(SearchRange As Range, FindWhat As Variant, _
  11.                   Optional After As Range, _
  12.                   Optional LookIn As Variant = xlFormulas, _
  13.                   Optional LookAt As Variant = xlPart, _
  14.                   Optional SearchOrder As Variant = xlByRows, _
  15.                   Optional SearchDirection As Variant = xlNext, _
  16.                   Optional MatchCase As Variant = False, _
  17.                   Optional MatchByte As Variant = True, _
  18.                   Optional SearchFormat As Variant = False) As Collection

  19. Dim FoundCell As Range '存放找到的单元格区域;
  20. Dim AfterCell As Range '存放查找的起始单元格;
  21. Dim FoundCol As Collection '存放找到单元格区域的集合;
  22. Dim firstAddress As String '存放第一次找到的单元格的地址

  23. Set FoundCol = New Collection 'Collecion类实例化为对象

  24. '下面这个判断语句完成对After参数值的控制
  25. If After Is Nothing Then
  26. Else
  27.   Set AfterCell = After '如果after参数不为空,这用提供的after参数值
  28. End If

  29. '查找第一个符合条件的值
  30. Set FoundCell = SearchRange.Find(what:=FindWhat, After:=AfterCell, _
  31.                               LookIn:=LookIn, _
  32.                               LookAt:=LookAt, _
  33.                               SearchOrder:=SearchOrder, _
  34.                               SearchDirection:=SearchDirection, _
  35.                               MatchCase:=MatchCase, _
  36.                               MatchByte:=MatchByte, _
  37.                               SearchFormat:=SearchFormat)


  38. If Not FoundCell Is Nothing Then
  39.     firstAddress = FoundCell.Address '如果找到第一个值,然后把单元格地址赋值给FirstAddress变量
  40.    
  41.     '下面的循环是在区域里不断查找需要的值,并不断添加到FoundCol集合
  42.     Do
  43.       FoundCol.Add FoundCell '把找到的单元格赋值给FoundCol对象
  44.       
  45.       '根据SearchDirection参数,判断是向上搜索,还是向下搜索
  46.       If SearchDirection = xlNext Then
  47.         Set FoundCell = SearchRange.FindNext(After:=FoundCell)
  48.       Else
  49.         Set FoundCell = SearchRange.FindPrevious(After:=FoundCell)
  50.       End If
  51.     Loop Until (FoundCell Is Nothing) Or (FoundCell.Address = firstAddress) '经典用法,只要找到单元格和第一个找到的单元格地址不一样,就一直循环
  52. End If
  53. Set FindPlus = FoundCol '把集合对象赋值给函数名
  54. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2018-8-7 16:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-8-29 09:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
收藏了,慢慢看

TA的精华主题

TA的得分主题

发表于 2018-12-6 11:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-12-6 11:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
opiona 发表于 2016-5-24 12:58
实例文件:

内附函数:查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)

厉害厉害。点赞点赞。

TA的精华主题

TA的得分主题

发表于 2019-3-12 23:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢分享!我也要好好总结一下

TA的精华主题

TA的得分主题

发表于 2019-5-25 11:00 | 显示全部楼层
老师好,我工作中需要对工作簿中每张工作表的不同区域进行不同的字体字号加粗边框的设置,同一段字体字号加粗边框设置的代码需要重复很多次(最终200多行),可否通过自定义函数或是有其他办法优化?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 10:55 , Processed in 0.034038 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表