我有一个包含大量数据的Excel工作表。我希望在顶部实现一个“搜索框”,用户可以在其中键入一个术语/字符串,单击一个按钮,Excel将突出显示包含该字符串的任何单元格。但是,我还希望一旦用户鼠标单击文档中的任何位置,这些单元格将“取消突出显示”。我似乎找不到这方面的VBA代码...主要是最后一部分。谢谢我曾尝试使用条件格式解决该问题,但无法使其正常工作,因此现在我希望使用VBA来解决该问题。但是,我对鼠标单击属性并不熟悉。
h79rfbju1#
条件格式+ VBA清除“使用公式确定要格式化的单元格”中的以下公式将突出显示“包含”搜索短语的任何单元格:=NOT(ISERROR(查找($C$2,B5,1)))
您可以看到我们使用了'FIND([$C$2中的搜索栏值],[在动态B5中,因此它分别应用于搜索范围中的每个单元格],[从1开始])。如果它找到了值,它将不会出错,如果它没有找到,它将出错。如果我们删除单元格内容,所有内容都将被格式化。要解决此问题,我们可以修改公式以包含一个if语句来检查搜索栏是否为空,或者简单地添加第二个条件格式:=空白($C$2)
如果要在单击离开时使格式清晰,则需要访问VBA工作表模块:
接下来,您需要粘贴以下代码:
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sBar As Range Set sBar = Range("C2") If Selection.Address <> sBar.Offset(1, 0).Address Then sBar.Value = "" End Sub
成品:
第一次
1条答案
按热度按时间h79rfbju1#
条件格式+ VBA清除
“使用公式确定要格式化的单元格”中的以下公式将突出显示“包含”搜索短语的任何单元格:
=NOT(ISERROR(查找($C$2,B5,1)))
您可以看到我们使用了'FIND([$C$2中的搜索栏值],[在动态B5中,因此它分别应用于搜索范围中的每个单元格],[从1开始])。
如果它找到了值,它将不会出错,如果它没有找到,它将出错。
如果我们删除单元格内容,所有内容都将被格式化。要解决此问题,我们可以修改公式以包含一个if语句来检查搜索栏是否为空,或者简单地添加第二个条件格式:
=空白($C$2)
如果要在单击离开时使格式清晰,则需要访问VBA工作表模块:
接下来,您需要粘贴以下代码:
成品:
第一次