【发布时间】:2017-07-23 03:10:54
【问题描述】:
我想在单元格中的现有文本之后插入一个红色勾号(或向下箭头)。
如何插入字符并保留单元格中预先存在的字符格式?我在这些单元格中只用粗体、下划线或着色的部分单词。
一般建议的代码将原始单元格内容的所有自定义字符格式恢复为单元格字体格式。
ActiveCell.FormulaR1C1 = ActiveCell & " P "
【问题讨论】:
标签: excel vba string formatting
我想在单元格中的现有文本之后插入一个红色勾号(或向下箭头)。
如何插入字符并保留单元格中预先存在的字符格式?我在这些单元格中只用粗体、下划线或着色的部分单词。
一般建议的代码将原始单元格内容的所有自定义字符格式恢复为单元格字体格式。
ActiveCell.FormulaR1C1 = ActiveCell & " P "
【问题讨论】:
标签: excel vba string formatting
已编辑:使用ActiveCell.Value 或ActiveCell.Formula 确实会改变您以前拥有的任何特殊格式(我最初的帖子忽略了这一点)。但是,正如您的研究间接显示的那样,您可以使用 character.insert 更改文本,但您需要知道插入位置的字符长度以避免更改您的自定义格式。
试试这个,而不是值或公式设置。
ActiveCell.Characters(ActiveCell.Characters.Count + 1, 1).Insert (" P ")
然后您继续使用类似的方法更新倒数第二个字符(这实际上是在最后一个字符之前编辑 1 个字符)。
With ActiveCell.Characters(ActiveCell.Characters.Count -1, Length:=1).Font
.Name = "Wingdings 2"
.FontStyle = "Bold"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
【讨论】:
Cell。我将代码更改为使用ActiveCell。这样的错误应该不会持续存在。
ActiveCell.Characters(Len(ActiveCell.Value), 1).Insert (" P ")我会更新(注意缺少的:=
我的最终代码在单元格中的文本后插入一个勾号,其后有一个未格式化的空格,允许稍后在其后添加普通文本(结合上面的答案,更正和excel vba select second to last character in a cell):
Sub I___TickRedAFTERText_KeepsOtherCharFormatting()
ActiveCell.Characters(ActiveCell.Characters.Count + 1, 1).Insert (" P ") 'down arrow is " â "
'format the new character but not the added spaces
With ActiveCell.Characters(ActiveCell.Characters.Count - 1, 1).Font 'second to last character in cell
.Name = "Wingdings 2"
.Bold = True
.Color = -16776961 'from recorded macro
End With
End Sub
【讨论】: