gpt4 book ai didi

excel - Excel VBA 的子字符串着色 : why do some obvious methods not work?

转载 作者:行者123 更新时间:2023-12-02 05:41:13 26 4
gpt4 key购买 nike

我一直在构建一些有趣的可视化效果,这些可视化效果依赖于 VBA 代码为 Excel 中的子字符串设置不同颜色的能力。对于包含字符串的单元格,语法如下所示 rCell.Characters(start,end).Font.Color=SomeColour

我的应用程序通过将新字符串附加到现有值上,然后设置新字符串的颜色,一步构建字符串并设置颜色值。这不起作用。从完整的字符串开始,然后为多个子字符串着色确实有效。

两个简单的例程说明了差异:

    Sub TestColourString1()
'designed to show that substring colour can be done to preexisting string
Dim rngTestString As Range

Set rngTestString = Range("colour_string")

rngTestString.Value = "red green blue"

rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)
rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)
rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)

End Sub




Sub TestColourString2()
'designed to show that setting colour while building string doesn't work
Dim rngTestString As Range

Set rngTestString = Range("colour_string")

rngTestString.Value = "red "
rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)

rngTestString.Value = rngTestString.Value & "green "
rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)

rngTestString.Value = rngTestString.Value & "blue"
rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)


End Sub

这两个例程会产生如下所示的两个不同结果: the image in two cells from excel

对于具有更多子段的较长字符串,情况甚至更糟。我使用的是 Excel 2010。

这是我的错还是一个错误?有没有更好的方法从 VBA 创建字符串并为其着色?

最佳答案

分配.Value并不会神奇地弄清楚如何附加到现有数据。它会删除旧数据并放入新数据。

如果字符有颜色,则使用第一个字符的颜色为新字符串着色。

如果您想要实际附加,就像您在 Excel 中手动使用公式栏一样,则使用 .Characters 附加:

Dim rngTestString As Range

Set rngTestString = Range("colour_string")

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "red "
rngTestString.Characters(1, 4).Font.Color = RGB(255, 0, 0)

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "green "
rngTestString.Characters(5, 10).Font.Color = RGB(0, 255, 0)

Range("colour_string").Characters(Len(Range("colour_string").Value) + 1).Text = "blue"
rngTestString.Characters(11, 14).Font.Color = RGB(0, 0, 255)

关于excel - Excel VBA 的子字符串着色 : why do some obvious methods not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com