VBA宏以查找单元格范围内的特定文本并将其设置为粗体

VBA宏以查找单元格范围内的特定文本并将其设置为粗体,vba,excel,Vba,Excel,我正在尝试开发一个宏,以便在工作簿中的所有工作表中查找特定文本,并将文本设置为粗体 以下是我目前拥有的效果良好的产品: Sub Style_Worksheets() Dim ws As Worksheet For Each ws In Sheets ws.Activate Dim sCellVal As String sCellVal = Range("A1").Value sCellVal = Range("A5").Value sCellVal = Range("A7").V

我正在尝试开发一个宏,以便在工作簿中的所有工作表中查找特定文本,并将文本设置为粗体

以下是我目前拥有的效果良好的产品:

Sub Style_Worksheets()

Dim ws As Worksheet

For Each ws In Sheets
    ws.Activate

Dim sCellVal As String

sCellVal = Range("A1").Value
sCellVal = Range("A5").Value
sCellVal = Range("A7").Value
sCellVal = Range("B7").Value

If sCellVal Like "*Workflow Name:*" Or _
sCellVal Like "Events*" Or _
sCellVal Like "Event Name*" Or _
sCellVal Like "Tag File*" Then

Range("A1").Font.Bold = True
Range("A5").Font.Bold = True
Range("A7").Font.Bold = True
Range("B7").Font.Bold = True

End If
Next ws
End Sub
现在我面临的问题是,我有一个工作表中的特定文本在单元格A16中,而另一个工作表中的文本在单元格A10中

我有100多张工作表需要设置样式,每个工作表的特定文本位于不同的单元格中

我希望宏在单元格A10和A16之间查找特定文本,如果它找到文本,我希望它将其设置为粗体

我已尝试在相关位置添加以下内容:

sCellVal = Range("A10:A16").Value
以及:

以及:

…但没有快乐

有人能帮我吗

谢谢


A

试试看。经过充分测试

Option Explicit

Sub Style_Worksheets()

    Dim TestPhrases() As String
    TestPhrases = Split("Workflow Name:,Events,Event Name,Tag File", ",")

    Dim ws As Worksheet

    For Each ws In Worksheets

        Dim CheckCell As Range
        For Each CheckCell In ws.Range("A10:A16")

            Dim Looper As Integer
            For Looper = LBound(TestPhrases) To UBound(TestPhrases)

                If InStr(CheckCell.Value, TestPhrases(Looper)) Then
                    CheckCell.Font.Bold = True
                    Exit For
                End If


            Next Looper

        Next CheckCell

    Next ws

End Sub

试试看。经过充分测试

Option Explicit

Sub Style_Worksheets()

    Dim TestPhrases() As String
    TestPhrases = Split("Workflow Name:,Events,Event Name,Tag File", ",")

    Dim ws As Worksheet

    For Each ws In Worksheets

        Dim CheckCell As Range
        For Each CheckCell In ws.Range("A10:A16")

            Dim Looper As Integer
            For Looper = LBound(TestPhrases) To UBound(TestPhrases)

                If InStr(CheckCell.Value, TestPhrases(Looper)) Then
                    CheckCell.Font.Bold = True
                    Exit For
                End If


            Next Looper

        Next CheckCell

    Next ws

End Sub

只需在有问题的单元格上循环:

Sub Style_Worksheets()

    Dim ws As Worksheet, sCellVal As String
    Dim R As Range

    For Each ws In Sheets
        ws.Activate
        For Each R In Range("A1:A16")

            sCellVal = R.Text

            If sCellVal Like "*Workflow Name:*" Or _
                sCellVal Like "Events*" Or _
                sCellVal Like "Event Name*" Or _
                sCellVal Like "Tag File*" Then
                    R.Font.Bold = True
            End If
        Next R
    Next ws
End Sub

只需在有问题的单元格上循环:

Sub Style_Worksheets()

    Dim ws As Worksheet, sCellVal As String
    Dim R As Range

    For Each ws In Sheets
        ws.Activate
        For Each R In Range("A1:A16")

            sCellVal = R.Text

            If sCellVal Like "*Workflow Name:*" Or _
                sCellVal Like "Events*" Or _
                sCellVal Like "Event Name*" Or _
                sCellVal Like "Tag File*" Then
                    R.Font.Bold = True
            End If
        Next R
    Next ws
End Sub

我建议查看查找指定文本的Find方法-如果要查找多个可选文本位,则需要循环。我建议查看查找指定文本的Find方法-如果要查找多个可选文本位,则需要循环例如。我想您可以忽略>0。但是根据代码,如果在同一单元格中找到所有项目,则范围内任何单元格中的文本都将以粗体显示。@sktneer-我确实调整了代码以使其正常工作。有趣的我一直认为Instr的计算结果为False(如果没有找到),如果找到则为整数值。但如果被发现的话,它也等于真的。感谢您提醒我测试我自己的理论:通常人们在Instr中使用>0,这似乎更符合逻辑,但也可以在不使用>0的情况下使用。很高兴你觉得它有用您对代码进行了很好的编辑,因为在内部For循环中迫切需要Exit For+1。我想您可以忽略>0。但是根据代码,如果在同一单元格中找到所有项目,则范围内任何单元格中的文本都将以粗体显示。@sktneer-我确实调整了代码使其正常工作。有趣的我一直认为Instr的计算结果为False(如果没有找到),如果找到则为整数值。但如果被发现的话,它也等于真的。感谢您提醒我测试我自己的理论:通常人们在Instr中使用>0,这似乎更符合逻辑,但也可以在不使用>0的情况下使用。很高兴你觉得它有用您对代码进行了很好的编辑,因为在内部For循环中迫切需要Exit For+1美元。