VBA中的实时搜索/计数发生?

时间:2016-11-29 08:13:24

标签: vba excel-vba excel

我想知道,有没有办法在vba中创建实时搜索和计数方法? (比如webbrowser ctrl f) 我在工作表上添加了一个文本框,并添加了此代码以实现搜索:

ActiveWindow.ScrollRow = Cells.Find(TextBox1.Value, searchorder:=xlByRows, searchdirection:=xlNext).Row

这允许我在我的文档上第一次出现。 我想要的是计算剩余的出现次数并使用按钮导航。 所以我添加一个计数代码:

count = 0
With ThisWorkbook.Worksheets(1).UsedRange
    Set Loc = .Cells.Find(TextBox1.Value)
    Do Until Loc Is Nothing
        Set Loc = .FindNext(Loc)
        count = count + 1
    Loop
End With

我遇到的问题是,它很慢并且如果发现太多的事件(我在一个大文件上工作),我的excel会冻结。是否有更好的方法来实现这种东西?

谢谢!

1 个答案:

答案 0 :(得分:3)

var allItems = dbContext.Items .Select(x => new { Id = x.Id, PropertyA = x.PropertyA, Children = x.Children.Select(c => new { Id = c.Id, PropertyA = c.PropertyA, }) }) .AsEnumerable() .Select(x => new Projection() { Id = x.Id, PropertyA = x.PropertyA, Children = x.Children.Select(c => new Projection { Id = c.Id, PropertyA = c.PropertyA }).ToList() }).ToList(); 要快得多。

完全匹配

WorksheetFunction.CountIf

计算包含字符串值

的单元格
WorksheetFunction.CountIf(ThisWorkbook.Worksheets(1).UsedRange, TextBox1.Value)

参考:MSDN - WorksheetFunction.CountIf Method (Excel)