3

我正在尝试在工作簿的所有工作表中搜索特定字符串“ERROR”,并将其设为粗体并将找到的单元格着色为红色。

我能够解析每个工作表。我无法使用FindVBA 的功能。

4

3 回答 3

10

Find这是使用和格式化找到的单元格的示例

Sub FindERROR()
    Dim SearchString As String
    Dim SearchRange As Range, cl As Range
    Dim FirstFound As String
    Dim sh As Worksheet

    ' Set Search value
    SearchString = "ERROR"
    Application.FindFormat.Clear
    ' loop through all sheets
    For Each sh In ActiveWorkbook.Worksheets
        ' Find first instance on sheet
        Set cl = sh.Cells.Find(What:=SearchString, _
            After:=sh.Cells(1, 1), _
            LookIn:=xlValues, _
            LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False, _
            SearchFormat:=False)
        If Not cl Is Nothing Then
            ' if found, remember location
            FirstFound = cl.Address
            ' format found cell
            Do
                cl.Font.Bold = True
                cl.Interior.ColorIndex = 3
                ' find next instance
                Set cl = sh.Cells.FindNext(After:=cl)
                ' repeat until back where we started
            Loop Until FirstFound = cl.Address
        End If
    Next
End Sub
于 2012-08-05T04:28:40.213 回答
1

如果您在 excel vba 中搜索,您可以使用以下简单代码和InStr命令。

Private Sub CommandButton1_Click()
Dim RowNum As Long

RowNum = 1


Do Until Sheets("Data").Cells(RowNum, 1).Value = ""

If InStr(1, Sheets("Data").Cells(RowNum, 2).Value, TextBox1.Value, vbTextCompare) > 0 Then
On erro GoTo next1
ListBox1.AddItem Sheets("Data").Cells(RowNum, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Data").Cells(RowNum, 2).Value
End If
next1:
RowNum = RowNum + 1
Loop
End Sub

你可以从这里下载示例文件

于 2018-08-12T15:09:30.373 回答
-1

这个怎么样:

If Not WorkBook.Sheets("Sheet1").Range("A1:Z150").Find("Cookie") Is Nothing 
    MsgBox "Found a Cookie"
End If
于 2019-03-13T15:48:28.790 回答