Excel 2010 VBA:如何使用Range.Find()保存/caching查找参数?
我以前做过这个,但是已经很多年了。 拿这个代码:
Set Find = r.Find(Text, LookIn:=xlFormulas, lookat:=xlWhole)
这运行在我有一个macros。 问题是,当我去用CTRL + F进行常规查找时,我的macros代码中使用的参数被保存。 我通常喜欢在单元格内search,而不是像上面的代码那样在整个单元格内search。 每次打开查找窗口时,扩大查找选项并取消选中“匹配整个单元格内容”是一件很痛苦的事情。
我以前做的是将当前的查找设置保存到一个variables,运行.Find(),然后将参数设置回他们是什么,但我无法弄清楚。
在你的代码结束时,当你完成你所需要做的事情时,把它设置回来:
Set Find = r.Find(Text, LookIn:=xlValues, lookat:=xlPart)
从msdn文章 :
备注每次使用此方法时,都会保存LookIn,LookAt,SearchOrder和MatchByte的设置。 如果下次调用方法时不指定这些参数的值,则使用保存的值。 设置这些参数将更改“查找”对话框中的设置,如果省略参数,则更改“查找”对话框中的设置可更改所使用的已保存值。 为避免出现问题,请每次使用此方法时明确设置这些参数。
我从来没有听说过检索和恢复查找对话框设置的任何方法。
我猜这些是查找函数实现中的静态参数,实际上没有外部的地方可以获得当前值。 不影响查找function的最好方法是尝试使用“匹配”来重新实现当前的function。