我在excel中使用公式构建了一个字符串。作为一个例子
单元格C3包含文本“语言”
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
答案 0 :(得分:4)
当且仅当
时,您的已发布功能Sub
调用(即,正如其他人提到的那样,而不是UDF)和
InText
中包含的值是字符串常量。 (这是我的答案的主要观点)InText
中的任何单元格, 将无效。 AFAIK您无法格式化公式返回的字符串 part 。
顺便说一下,我很想在这方面被证明是错的!
答案 1 :(得分:2)
关于Hightower的问题,“您如何将公式输出转换为字符串,以便您可以应用文本格式?”
要“强制转换”公式的输出以便您可以应用文本格式,您必须将公式返回的值写入电子表格,然后将格式应用于您编写的值。您可以将值写入包含公式的单元格(这将删除公式),或者您可以将值写入电子表格中的不同位置(这将保留公式,但之后您将看到双倍)。
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
答案 2 :(得分:0)
您无法在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
答案 3 :(得分:0)
您需要使用此代码:
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只能返回结果,但永远不会修改单元格!