【问题标题】:Add formatted symbol after text, keeping character formats of pre-existing text在文本后添加格式化符号,保留已有文本的字符格式
【发布时间】:2017-07-23 03:10:54
【问题描述】:

我想在单元格中的现有文本之后插入一个红色勾号(或向下箭头)。

如何插入字符并保留单元格中预先存在的字符格式?我在这些单元格中只用粗体、下划线或着色的部分单词。

一般建议的代码将原始单元格内容的所有自定义字符格式恢复为单元格字体格式。

ActiveCell.FormulaR1C1 = ActiveCell & " P "

【问题讨论】:

    标签: excel vba string formatting


    【解决方案1】:

    已编辑:使用ActiveCell.ValueActiveCell.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
    

    【讨论】:

    • @PGCodeRider 该代码返回错误 404 需要对象。将其修改为 ActiveCell.Value = ActiveCell.Value & " P " 删除了单元格中预先存在的字符格式。我的问题是如何保留预先存在的字符格式?
    • @Piecevcake,抱歉我错过了。我会更新的。小改动。
    • @Piecevcake。你收到的第一个错误是因为我认为你已经定义了Cell。我将代码更改为使用ActiveCell。这样的错误应该不会持续存在。
    • 第一行 ActiveCell.Characters(Len(ActiveCell.Value), Length:=1).Insert("P") 返回错误信息语法错误?有什么需要补充的吗?
    • @Piecevcake Dang...我的错。 ActiveCell.Characters(Len(ActiveCell.Value), 1).Insert (" P ")我会更新(注意缺少的:=
    【解决方案2】:

    我的最终代码在单元格中的文本后插入一个勾号,其后有一个未格式化的空格,允许稍后在其后添加普通文本(结合上面的答案,更正和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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多