Excel VBA正则expression式:如果以三个空格开始,则将单元格设置为粗体
我正在尝试扫描列“A”,并将粗体字应用于所有以三个空格开头的单元格,然后继续使用其他任何字符。 如果一个单元格string以四个空格字符开头或更多; 粗体字体不应该应用于它。
这是我到现在为止, 这导致列A的所有单元变为粗体。
Sub Macro1() Dim regEx As New RegExp NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count regEx.Pattern = "(\s{3})(\S)" regEx.Global = False Sheets("1022_CPU").Activate Range("A2").Activate Application.ScreenUpdating = False Do Until IsEmpty(ActiveCell) If regEx.Test(ActiveCell.Value) Then ActiveCell.Font.Bold = True Else ActiveCell.Font.Bold = False End If ActiveCell.Offset(1, 0).Activate Loop Range("A1").Select Application.ScreenUpdating = True End Sub
编辑:示例数据:
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process() org.apache.coyote.http11.Http11Processor.process() org.apache.catalina.connector.CoyoteAdapter.service() org.apache.catalina.core.StandardEngineValve.invoke()
考虑到上面的数据,我想在第一行应用粗体字(“org。”前面有三个空格,而另外三行没有,这就是为什么像“LEFT”工作;因为它将在所有行上应用粗体字体。
如果你想避免使用RegEx,试试这个:(修剪的单元格删除所有的前导和尾随空格,如果3个空格的长度+3与原始长度相匹配,则将单元格变为粗体)
Sub Macro1() Dim LastRow as Long Dim CurRow As Long Sheets("1022_CPU").Activate LastRow = Range("A" & Rows.Count).End(xlUp).Row Application.ScreenUpdating = False For CurRow = 2 to LastRow If Len(Cells(CurRow, 1).Value) = Len(Trim(Cells(CurRow, 1).Value))+3 Cells(CurRow, 1).Font.Bold = True Else Cells(CurRow, 1).Font.Bold = False End If Next CurRow Range("A1").Select Application.ScreenUpdating = True End Sub
从三个空格开始,然后继续其他任何字符。
我认为这个正则expression式将符合你的标准:
regEx.Pattern = "^\s{3}.*$"
A列中的所有单元格是否应该是粗体都很难说清楚,没有一点样本数据。
顺便说一下,你不需要If
块:
If regEx.Test(ActiveCell.Value) Then ActiveCell.Font.Bold = True Else ActiveCell.Font.Bold = False End If
regEx.Test(ActiveCell.Value)
是一个布尔值, regEx.Test(ActiveCell.Value)
也是如此 – 因此您可以将其分配给regEx.Test
调用的结果:
ActiveCell.Font.Bold = regEx.Test(ActiveCell.Value)
这不会解决你的问题,但肯定看起来更清洁;)
这就是说,我不认为你需要VBA,甚至更less的RegEx来做到这一点。 尝试使用条件格式:select列A,然后使用公式确定格式 : =LEFT(A1,3)=" "
,并将其设置为粗体。
考虑到提供的样本数据,看起来你已经分析了/问题陈述错误:
它以三个空格开始,然后继续与
其他任何字符非空白字符。
如果数据总是至less有4个字符长,我不明白为什么条件格式方法不起作用:
=AND(LEFT(A1,3)=" ",MID(A1,4,1)<>" ")
前三个字符是空格,第四个字符不是空格的粗体行。
- Excel VBA使用正则expression式查找和屏蔽PAN数据,以实现PCI DSS合规性
- Excel UDF用于捕获字符中的数字
- 数据硝基和正则expression式(Python)
- 在附加数据的同时在Excel SaveParser中发出
- Excel VBA正则expression式 – 如何匹配3个字符之间可能有其他字符
- 需要从string中的数字中分离出字母,通过vb.net
- RegEx在Dreamweaver中查找/replace – 将HTML粘贴为variables?
- 找不到为什么我的VBA简单正则expression式命令不起作用
- 正则expression式VBA Excel查找单元格内的模式