我正在使用下面的VBA代码在“!”之间添加某些文本。字符加粗(例如:!示例!。)。
现在我要删除“!”从文本的左侧和右侧开始。我该如何做到呢?
Sub change()
Dim r As Range, st As String, boo As Boolean
Dim L As Long, i As Long
Dim rng As Range: Set rng = Application.Range("Auswertung!A1:D100")
For Each r In rng.Cells
st = r.Text
boo = False
L = Len(st)
For i = 1 To L
If Mid(st, i, 1) = "!" Then
boo = Not boo
Else
If boo Then r.Characters(i, 1).Font.Bold = True
End If
Next i
Next r
End Sub
答案 0 :(得分:1)
如果在感叹号上进行拆分,则会自动将其删除。可以使用Join将文本复活,并且拆分后的数组允许将多个元素加粗。
通过整体处理每个粗体部分并完全跳过非粗体部分,这比“遍历”该单元一次只包含一个字符的效率要高得多。
$con
答案 1 :(得分:0)
innerString = replace(fullString,“!”,“”)
答案 2 :(得分:0)
您还可以使用正则表达式-我认为这是VBA未被充分利用的功能。
Dim r1 As New RegExp
Dim r2 As New RegExp
r1.Pattern = "^!"
r2.Pattern = "!$"
st = r1.Replace(st, "")
st = r2.Replace(st, "")
^
原子表示“开始于”,而$
原子表示“结束于”。
或者,您可以使用正则表达式捕获()
原子来提取感叹号之间的匹配项:
Dim r As New RegExp
Dim m As MatchCollection
r.Pattern = "^!(.+)!$"
Set m = r.Execute(st)
If m.Count > 0 Then
st = m.Item(0).SubMatches.Item(0)
End If
正则表达式的最大优点是您可以不更改字符内部的文本。例如,这仍然可以工作:
!I like Pie! It's delicious!!
可以通过添加对“ Microsoft VBScript正则表达式5.5”的引用来将Regex支持添加到任何VBA项目中。