我在excel中使用公式建立了一个字符串。例如
单元格C3包含文本"Languages"
Cell C4 = "英语,西班牙语,德语,法语"
我的公式= C3 &":",CHAR (10),C4
期望文本为:
语言:
英语、西班牙语、德语、法语
(其中粗体文本实际上是某种颜色,如红色)
是否有办法在Excel中做到这一点(改变部分文本格式)。
我试过一个公式…(不工作)
Function formatText(InText As Range)
'Set font color
InText.Characters(1.5).Font.Color = Red
'InText.Characters((InStr(1, ":", InText) + 1), (Len(InText) - InStr(1, ":", InText))).Font.ColorIndex = 3
End Function
您发布的函数与工作当且仅当
- 从
Sub
调用(即,正如其他人所提到的,不是作为UDF)
和
-
InText
范围内的值为字符串常量。(这是我回答的要点)
它将不工作任何单元格在范围InText
包含公式。答:您不能格式化公式返回的字符串部分。
关于Hightower的问题,"如何将公式输出转换为字符串以便应用文本格式?"
要"强制转换"公式的输出,以便可以应用文本格式,必须将公式返回的值写入电子表格,然后将格式应用于所写的值。您可以将值写入包含公式的单元格中(这将擦除公式),也可以将值写入电子表格中的其他位置(这将保留公式,但随后您将看到double)。
Sub Cell_Format(InText as Range)
InText.formula = cstr(InText.value) ' converts result of formula into a string literal
'or: InText.offset(0,1).formula = cstr(InText.value) -- writes the value in the cell next to InText
InText.characters(1, 5).font.color = vbRed
End Sub
则Cell_Format range("$A$1")
将单元格$A$1中的公式替换为字符串常量,并将前五个字符的颜色更改为红色。
如果您希望为大于一个单元格的范围执行此操作,请将此代码添加到上面:
Sub Range_Format(InText as Range)
For each c in InText
Cell_Format(c)
Next
End Sub
您需要使用以下代码:
InText.Characters(1,5).Font.Color = RGB(255, 0, 0)
如果你想让它更灵活,这样只有(完整的)第二行是红色的,使用下面的代码:
InText.Characters(Instr(InText, vbCr)+1, Len(InText)-Instr(InText, vbCr)).Font.Color = RGB(255, 0, 0)
注意,你的函数需要从VBA调用,也就是说,你不能使用它作为一个用户自定义函数!udf只能返回结果,但不能修改单元格!
不能在Excel界面中直接调用下面的UDF。为此,您必须使用事件,因为UDF不能改变单元格的物理特性。想了解更多细节,你可以阅读这个链接。http://support.microsoft.com/kb/170787
Function formatText(InText As Range)
'Set font color
InText.Interior.Color = vbRed
'InText.Characters((InStr(1, ":", InText) + 1), (Len(InText) - InStr(1, ":", InText))).Font.ColorIndex = 3
End Function