7

我已经使用 excel 中的公式构建了一个字符串。举个例子

单元格 C3 包含文本“语言”
单元格 C4 = “英语、西班牙语、德语、法语”
My 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
4

4 回答 4

4

当且仅当您发布的功能与工作

  • 它是从 a 调用的Sub(即,正如其他人提到的那样,不是作为 UDF)

  • range 中包含的值InText是字符串常量。(这是我回答的重点)

不适InText用于包含公式的范围内的任何单元格。AFAIK,您无法格式化公式返回的字符串的一部分。

顺便说一句,我很想被证明是错误的!

于 2013-02-28T07:52:22.300 回答
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
于 2014-12-04T00:12:13.183 回答
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
于 2013-02-28T07:11:31.397 回答
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 只能返回结果,但不能修改单元格!

于 2013-02-28T07:14:37.060 回答