ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 自定义函数中如何改变单元格的值?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-8-7 19:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 香川群子 于 2014-8-7 20:08 编辑

9楼的函数能有什么用处呢?
Function F(R As Range, Optional S1 = "空白赋值", Optional S2 = "非空白赋值", Optional S3 = "改变了")
    If R = "" Then R.Replace "", S1 Else R.Replace "*", S2
    F = S3 & R.Address(0, 0)
End Function

TA的精华主题

TA的得分主题

发表于 2014-8-7 22:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
至少可以前面的论断错误。

点评

赢了还要去点一下,小淘气。  发表于 2014-8-7 22:09

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-8 08:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
多谢各位,

我原来碰到的问题及后来摸索解决的办法如下:

问题:
当单元格内容发生变化时,采取一些修改部分单元格的操作,
由于单元格内容的变化是通过公式引用来实现的,而非人为直接改动,这样的话worksheet_change貌似识别不出来,

最初想的解决办法
用function来实现,通过在function里加application.volatile可以识别通过公式引用产生的变化,
但这样的话想在表里修改内容就不行,因此此路不通,看网上有一些绕弯的方法,感觉不太方便

后来用的方法
楼主用了worksheet_Calculate的方法替代解决了,当单元格公式重算时,触发该sub,从而达到目的。

以上方法,供有此需求的伙计们参考。再次谢谢各位帮忙

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-8-8 11:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yqchenlolo 发表于 2014-8-8 08:08
多谢各位,

我原来碰到的问题及后来摸索解决的办法如下:

Private Sub Worksheet_Calculate()

End Sub

嗯是的,可以达到楼主的目的。


…………
手段是实现目的的路径,及时改变思路,寻找最合适的路径本来就是正确的方法。


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-8 16:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2014-8-8 11:00
Private Sub Worksheet_Calculate()

End Sub

这时又衍生出一个子问题,
我用worksheet_Calculate函数时,
希望只在自动计算的区域是指定区域时,才执行之后的代码,不知道有否办法处理,
就类似于Worksheet_Change过程利用利用Target来判断一样。
(例如我希望只有单元格A1重算时才执行代码,单元格A2重算则不执行)

如果重算是以表为单位(即如果重算,表里所有单元格都重算,而无法做到只有一部分重算),那可能就没辙了

TA的精华主题

TA的得分主题

发表于 2014-8-8 16:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 香川群子 于 2014-8-8 16:44 编辑

Worksheet_Calculate()事件是没有参数的……无法控制

最好能把完整的问题、附件提出来。


也许有更好的解决办法。

TA的精华主题

TA的得分主题

发表于 2014-8-8 16:52 | 显示全部楼层
yqchenlolo 发表于 2014-8-8 08:08
多谢各位,

我原来碰到的问题及后来摸索解决的办法如下:

以后提问题先想好再提,免得被人家劈的找不到北。

点评

你是来帮助楼主呢,还是来秀技术……  发表于 2014-8-8 23:58

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-11 07:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢各位,下次改进。

TA的精华主题

TA的得分主题

发表于 2021-11-10 10:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Zamyi 发表于 2014-8-7 17:30
C1=f(A1,"谁说不可以!","我说行!")

这个方法似乎有问题,你多搞几个单元格调用这个自定义函数,第二次调用就不工作了

TA的精华主题

TA的得分主题

发表于 2022-12-27 22:42 | 显示全部楼层
Zamyi 发表于 2014-8-7 17:30
C1=f(A1,"谁说不可以!","我说行!")

测试了很久,列不能超过输入函数单元格所在的列,这是什么奇怪的现象
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 02:23 , Processed in 0.042136 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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