我只是尝试在Excel工作表中编写搜索宏。如何在编辑单元格时动态启动宏。在单元格中写入时,搜索宏应该在后台运行,每个字符都添加或删除,而不仅仅是在结尾处。
Worksheet_Change(ByVal Target As Range)
仅在编辑完成时启动(返回被点击或其他单元格被选中)。
感谢。
答案 0 :(得分:6)
你做不到。当Excel处于编辑模式时,代码引擎将不会运行。您必须让用户以单元格以外的方式输入文本 - 例如工作表上的控件或用户窗体上的控件。
答案 1 :(得分:1)
感谢Dick Kusleika回答我的问题并让我走上正轨。
这是任何有类似要求的人的最终解决方案。它基本上与ActiveX TextBox一起用于输入搜索字符串。宏,而不是在搜索区域中查找包含搜索字符串的所有条目。搜索字段中所有其他已填充的行将被隐藏。这在写入TextBox时立即起作用。因此,当删除搜索字符串中的字符时,如果合适,将立即显示一次隐藏的行。
Private Sub TextBox1_Change()
Dim searchArea As Range, searchRow As Range, searchCell As Range
Dim searchString As String
Dim lastRow As Integer
Application.ScreenUpdating = False
searchString = "*" & LCase(TextBox1.Value) & "*"
' unhide rows to have the full search field when editing
Rows.Hidden = False
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set searchArea = Me.Range("A5", "A" & lastRow) 'Me.Range("A5").End(xlDown))
searchArea.EntireRow.Hidden = True
For Each searchRow In searchArea.Rows
For Each searchCell In searchRow.Cells
If LCase(searchCell) Like searchString Then
searchRow.Hidden = False
Exit For
End If
Next searchCell
Next searchRow
Application.Goto Cells(1), True
Application.ScreenUpdating = True
End Sub
就像一个魅力。