我正在将单元格的内容添加到形状对象中。内容都是文本,但每个单元格可能有不同的格式。在将单元格的内容添加到形状时,我希望能够保留这种格式,以便一个粗体单元格会出现,依此类推。
对于源范围中的每个目标单元格,我一直在尝试获取当前Shape.TextFrame.Characters
对象并将新对象添加到其中。Range("TargetCell").Characters
有没有一种简单的方法可以将两个对象强制.Characters
在一起,以便文本连接并且格式更改以反映新文本边界处的源 - 我看到了该.Characters.Insert(string)
方法,但只插入文本,而不是格式。每次我在输出列表中添加一个新单元格时,我都需要重新计算文本的每个部分在哪里具有什么格式,这被证明是困难的。
我一直在尝试这些路线,但在尝试获取或设置该.Characters(n).Font.Bold
属性时不断遇到困难。
Private Sub buildMainText(Target As Range, oSh As Shape)
On Error GoTo 0
Dim chrExistingText As Characters
Dim chrTextToAdd As Characters
Dim chrNewText As Characters
Dim o As Characters
Dim i As Integer
Dim isBold As Boolean
Dim startOfNew As Integer
i = 0
With oSh.TextFrame
Set chrExistingText = .Characters
Set chrTextToAdd = Target.Characters
Set chrNewText = chrTextToAdd
chrNewText.Text = chrExistingText.Text & chrTextToAdd.Text
startOfNew = Len(chrExistingText.Text) + 1
.Characters.Text = chrNewText.Text
For i = 1 To Len(chrNewText.Text)
If i < startOfNew Then
If chrExistingText(i, 1).Font.Bold Then
.Characters(i, 1).Font.Bold = True
Else
.Characters(i, 1).Font.Bold = False
End If
Else
If chrNewText(i - startOfNew + 1, 1).Font.Bold Then
.Characters(i, 1).Font.Bold = True
Else
.Characters(i, 1).Font.Bold = False
End If
End If
Next i
End With
End Sub