У меня есть ячейка с текстом, например:
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.
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)
и сколько символов между предыдущим пробелом и 1, pos1
...
Thisis "BoldText":
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)
обычным шрифтом.Те, которые мы хотим, будут выделены жирным шрифтом, а затем (one after bold) to End
снова регулярно.
Как можно было бы достичь этого с несколькими экземплярами, чтобы достичь конечного результата?
В данный момент на каждом цикле сбрасывается последний.Excel ожидает, что он будет в синтаксисе 1 to (x - 1)
= обычный шрифт, x
= жирный шрифт, x + 1 to (y-1)
= обычный, y
= жирный, y + 1 to (z - 1)
и т. Д. Я просто не уверен, какСценарий это.
Большое спасибо заранее.Если вам нужно что-то более ясное, я могу сделать все возможное, чтобы объяснить больше.