我已经建立了使用Excel中的一个公式的字符串。 举个例子
小区C3包含文本“语言”
小区C4 =“英语,西班牙语,德语,法语”
我的Forumla = 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
含有式。 据我所知,你不能格式化由公式返回一个字符串的一部分 。
BTW我喜欢被证明是错误的这个!
至于海托华的问题,“你将如何投下公式输出到字符串,以便您可以将文本格式?”
以“铸造”公式的输出,使您可以将文本格式,您必须编写由下式到电子表格中返回的值,然后应用格式到你写的值。 你既可以写值到含有公式(这会擦除公式)的单元格,或者您可以将值写入电子表格不同的地方(这将保留公式,但那么你将看到双)。
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