如何为超过 255 的单元格中的单个字符格式化字体

Posted

技术标签:

【中文标题】如何为超过 255 的单元格中的单个字符格式化字体【英文标题】:How to format font for individual characters in cell beyond 255 【发布时间】:2019-04-22 19:53:10 【问题描述】:

我正在使用 Excel VBA 构建带有格式化标记文本的单元格。它工作正常,直到单元格超过 255 个字符。此时字体属性设置不正确。

我使用 VBA 添加带有Range.Value = Range.Value & newchar 的字符,效果很好。但是一旦单元格超过 255 个字符,使用Range.Characters(n,1).Font.property(例如NameColorStrikethroughUnderline)设置单个字符的字体属性将无法正常工作。当单元格超过 255 个字符时,如何将字体属性应用于单个字符?

对不起——这不是一个很好的问题描述。我正在添加一个字符并立即格式化该字符的字体,然后添加并格式化下一个字符,依此类推。要超过 255 个字符,我需要使用 &,但这会破坏单元格中已有文本的字体格式。

【问题讨论】:

具体来说,当我使用 Characters().Text 添加字符时,一旦达到 255,它就会拒绝添加更多字符。我可以使用 & 添加超过 255 个字符,但这会破坏以前添加到单元格的字符的字体格式。幸运的是,Characters.Font 超过 255 个(如帖子所示),我可能必须分两步完成——首先使用 & 添加所有字符,然后应用字体格式。啊。有什么选择吗?。 【参考方案1】:

你好吗?

所以我尝试了你的代码,这样做是为了用 255 个“A”和 255 个“B”填充单元格 A1

然后使用字符函数

结果出来了

可能你用错了函数Characters(1,256)

Characters 第一个参数是 Init char ,第二个参数是第一个之后的字符数。

希望对你有帮助

【讨论】:

从您的代码生成的 510 个格式化字符的单元格内容开始,如何在不影响现有 510 字体格式的情况下添加第 511 个字符? cells(1,1).Characters(511,1).Text = "x" 添加字符失败; cells(1,1).Value = cells(1,1).Value & "x" 添加了新字符,但似乎破坏了现有文本的格式,【参考方案2】:

如果不查看更多代码,很难说出你做错了什么。但这是格式化单元格中单个字符的一种方法。我已经用单元格中的 30,000 个字符对其进行了测试(尽管这需要很长时间)。下面的代码将创建一个带有字符的单元格并格式化具有多个特征的某些字符。示例为 750 个字符。

Option Explicit
Sub par()
    Dim R As Range
    Dim S As String
    Dim I As Long, J As Long

Set R = Range("A1")

For J = 1 To 10
For I = 48 To 65 + 26 * 2 + 5
    S = S & Chr(I)
Next I
Next J

Debug.Print Len(S)
R = S

For I = 1 To Len(S)
    Select Case Mid(S, I, 1)
        Case "A", "D", "Y", "a", "t", "x", "8"
        With R.Characters(I, 1)
            .Font.Bold = True
            .Font.Color = vbRed
            .Font.Strikethrough = True
            .Font.Size = .Font.Size + 2
        End With
    End Select
Next I

End Sub

【讨论】:

从您的代码生成的 750 个格式化字符的单元格内容开始,如何在不影响现有 750 字体格式的情况下添加第 751 个字符? R.Characters(751,1).Text = "x" 添加字符失败; R.Value = R.Value & "x" 添加了新字符,但似乎破坏了现有文本的格式。 @tbg22 我认为您的代码似乎可以使用少于 255 个字符的事实是异常的。由于 Characters 对象不是一个集合,MS 必须使用其他一些技术来允许您在某些情况下对其进行扩展。 罗恩,感谢您的回复。您是否知道任何扩展单元格内容的方法可以保留现有文本的字体格式?我唯一的办法是先通过数据添加字符,然后再通过第二次应用字体格式? @tbg22 我不知道在 Excel 中有任何其他方法可以做到这一点。话虽如此,似乎应该有一种方法,因为它可以手动完成,但这样做的机制是隐藏的,即使使用宏录制也是如此。

以上是关于如何为超过 255 的单元格中的单个字符格式化字体的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL单元格中输入数字会变成“#”字符号该怎么解决?

C#/VB.NET 在Excel单元格中应用多种字体格式

单个 UITableview 单元格中的多种字体大小 (Swift)

如何为每个 QTableView 单元格支持两个单独的可双击值?

如何为自定义单元格中的动态附加输入字段添加约束

如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器