[英]Substring colouring from Excel VBA: why do some obvious methods not work?
我一直在构建一些有趣的可视化,这些可视化依赖于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
这两个例程导致两个不同的结果如下所示:
对于具有更多子分段的更长字符串,情况更糟。 我正在使用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单元格中进行子标记,请参阅视频:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.