【问题标题】:Excel 2010 VBA: How to save/cache find parameters when using Range.Find()?Excel 2010 VBA:使用 Range.Find() 时如何保存/缓存查找参数?
【发布时间】:2011-06-29 18:27:17
【问题描述】:

我以前做过,但已经很多年了。拿这个代码:

Set Find = r.Find(Text, LookIn:=xlFormulas, lookat:=xlWhole)

这在我拥有的宏中运行。问题是当我用 CTRL+F 进行常规查找时,我的宏代码中使用的参数被保存了。我通常喜欢在单元格内容中搜索,而不是像上面的代码那样搜索整个单元格。每次打开查找窗口时,展开查找选项并取消选中“匹配整个单元格内容”有点麻烦。

我以前的做法是将当前的查找设置保存到一个变量中,运行.Find(),然后将参数设置回原来的样子,但我无法弄清楚。

【问题讨论】:

    标签: excel vba find


    【解决方案1】:

    在您的代码结束时,当您完成您需要做的事情时,只需将其设置回来:

    Set Find = r.Find(Text, LookIn:=xlValues, lookat:=xlPart)
    

    【讨论】:

      【解决方案2】:

      来自msdn article

      备注 每次使用此方法时都会保存 LookIn、LookAt、SearchOrder 和 MatchByte 的设置。如果下次调用该方法时没有为这些参数指定值,则使用保存的值。设置这些参数会更改“查找”对话框中的设置,而更改“查找”对话框中的设置会更改在省略参数时使用的保存值。为避免出现问题,请在每次使用此方法时显式设置这些参数。

      我从未听说过任何检索和恢复“查找”对话框设置的方法。

      我猜这些是 find 函数实现中的静态参数,实际上没有可以获取当前值的外部位置。不影响查找功能的最佳选择是尝试使用“匹配”来重新实现您当前的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-10
        • 2016-06-05
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多