如何在Microsoft Excel VBA中的合并单元格中修改(更改为粗体)特定的文本字符串?
我可以通过以下输入成功修改单个或一组正常单元格:如何在Microsoft Excel VBA中的合并单元格中修改(更改为粗体)特定的文本字符串?,vba,excel,Vba,Excel,我可以通过以下输入成功修改单个或一组正常单元格: .Range("C" & i) _ .Characters(WorksheetFunction.Find("NOTE:", Range("C" & i).Value, 1), 100) _ .Font.Bold = True 它沿着C列的长度向下延伸,并在“NOTE:”之后加粗(特别是超过100个字符,包括找到的文本字符串) 问题是-如果C列中有任何合并的单元格,它将忽略它。我已经运行了一些快速测试-它可以识别单元格中有文本,我
.Range("C" & i) _
.Characters(WorksheetFunction.Find("NOTE:", Range("C" & i).Value, 1), 100) _
.Font.Bold = True
它沿着C列的长度向下延伸,并在“NOTE:”之后加粗(特别是超过100个字符,包括找到的文本字符串)
问题是-如果C列中有任何合并的单元格,它将忽略它。我已经运行了一些快速测试-它可以识别单元格中有文本,我可以将合并单元格的内容打印到单个单元格中,稍后可以找到文本字符串,但找不到“注意:由于合并单元格本身的某些原因,从我所知,它适用于以C列中的单元格开头的合并单元格,但当合并单元格在C列之前开始时会中断。我可以使用
If
语句使其工作,以确定范围(“C”&I)
中的值是否为空,然后选择合并单元格的第一个单元格并执行格式化
下面是我开始工作的代码。我的数据集仅用于单元格C1:C20
:
Sub test()
Dim i As Integer
Dim rng As Range
With ThisWorkbook.ActiveSheet
On Error Resume Next
For i = 1 To 20
If .Range("C" & i).Value = "" Then
If Range("A" & i).Value <> "" Then
Set rng = Range("A" & i)
Else
Set rng = .Rows(i).SpecialCells(xlCellTypeBlanks)(1).Offset(0, 1)
End If
rng.Characters(WorksheetFunction.Find("NOTE:", rng.Value, 1), 100).Font.Bold = True
Else
.Range("C" & i).Characters(WorksheetFunction.Find("NOTE:", Range("C" & i).Value, 1), 100).Font.Bold = True
End If
Next i
End With
End Sub
子测试()
作为整数的Dim i
变暗rng As范围
使用ThisWorkbook.ActiveSheet
出错时继续下一步
对于i=1到20
如果.Range(“C”&i).Value=”“,则
如果范围(“A”&i).Value为“”,则
设置rng=范围(“A”和“i”)
其他的
设置rng=.Rows(i).特殊单元格(xlCellTypeBlanks)(1).偏移量(0,1)
如果结束
rng.Characters(工作表function.Find(“注意:”,rng.Value,1),100)。Font.Bold=True
其他的
.Range(“C”&i).字符(工作表函数.Find(“注意:”,Range(“C”&i).值,1),100)。Font.Bold=True
如果结束
接下来我
以
端接头
Before(用于表示合并单元格开始和结束位置的边框):
之后:
只需从合并区域中选取第一个(左上)单元格,然后继续代码:
With .Range("C" & i).MergeArea.Cells(1, 1)
lngFound = InStr(1, .Value2, "NOTE:", vbTextCompare)
If lngFound > 0 Then
.Characters(lngFound, 100).Font.Bold = True
End If
End With
这真是太棒了!我只是想弄清楚你现在做了什么,为什么它会起作用。。。非常感谢!我没有使用
.Range(“C”&i)
而是使用了.Range(“C”&i).MergeArea.Cells(1,1)
。剩下的我只是为了表现而改变。上面的变化仅仅是(写出来的):如果.Range(“C”&i)
是a的一部分,那么给我整个区域,我只想要.Cells(1,1)
左上角的单元格。你可能会感兴趣。