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美元。