我有一个包含文字的单元格,如下所示:
k a2 d eu1 n - oe2 r gj y2 t lj e2 r i1 - t y1 r kj - jh e2 z aa1
最终它应该是这样的:
k a2 d eu 1 n - oe2 r gj y2 t lj e2 r i 1 - t y 1 r kj - jh e2 z aa 1
出于此目的,单元格的值存储在变量v3中。
f()
这就是我在1 Public Sub Guide()
Dim v3 As String
Dim i, j As Integer
Dim pos, pos1 As Long
v3 = Sheets("Script").Cells(12, 8).Value
i = 1
j = 0
Do
j = InStr(i, v3, "1", vbTextCompare)
i = j + 1
pos = InStrRev(v3, " ", (j - 1))
pos1 = (j - 1) - pos
Call BoldText(v3, j - pos1, pos1)
Loop Until j = 0
End Sub
之前获得字母位置的方式,以及前一空格与1之间的字符数(j - 1)
...
这是“BoldText”:
pos1
所以这样它可以保留字符Sub BoldText(Txt, strt As Integer, Lngt)
Dim Ln As Long
Ln = Len(Txt)
Range("H12").Select
With ActiveCell.Characters(Start:=1, Length:=(strt - 1)).Font
.FontStyle = "Regular"
End With
With ActiveCell.Characters(Start:=strt, Length:=Lngt).Font
.FontStyle = "Bold"
End With
With ActiveCell.Characters(Start:=(strt + Lngt + 1), Length:=(Ln - strt)).Font
.FontStyle = "Regular"
End With
End Sub
常规字体。我们想要的那些大胆,然后1 to (one before the bold)
再次定期。
如何通过多个实例实现这一目标,从而实现最终结果?
目前,在每个循环中它重置最后一个循环。 Excel希望它的语法为(one after bold) to End
=常规字体,1 to (x - 1)
=粗体字体,x
=常规,x + 1 to (y-1)
=粗体,y
等。 ..我只是不确定如何编写脚本。
非常感谢提前。 如果你需要更清楚的东西,那么我可以尽力解释一下。
答案 0 :(得分:0)
这有点匆忙(而且有点像黑客),但至少应该让你开始。它使用正则表达式。您可以将其中的一些转换为带参数的子。
Sub Regex2()
Dim oMatches As Object, i As Long, vOut
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\s([a-z]+)1"
Set oMatches = .Execute(Range("A1"))
End With
ReDim vOut(0 To oMatches.Count - 1, 1 To 3)
For i = 0 To oMatches.Count - 1
vOut(i, 1) = oMatches(i).submatches(0)
vOut(i, 2) = oMatches(i).firstindex
vOut(i, 3) = oMatches(i).Length
Next i
For i = LBound(vOut) To UBound(vOut)
Range("A1").Characters(vOut(i, 2) + 1, vOut(i, 3) - 1).Font.Bold = True
Next i
End Sub