如何更改 Excel 单元格中特定公式的字体?

如何更改 Excel 单元格中特定公式的字体?
="InterContinental Vienna @ "&M9&" "&M42&" p/room p/night"

根据上述示例,M9 = EUR 且 M42 = 150

我寻找的结果是:

InterContinental Vienna @EUR 150p/room p/night

如何使用 VBA 对单元格中出现 M9 的特定列中的每一行执行此操作?

答案1

似乎你需要更多的 VBA,所以我创建了下面的代码,其中包含了关联。我不知道你打算如何使用它,所以格式当前单元格价格sub 只是作为代码的代理,指向您想要格式化的单元格。

格式价格sub 确定要加粗的文本的位置和长度。它假设您提供的示例文本以“@”为前缀并以空格分隔。它还假设您只传入一个单元格。

最后,加粗sub 是从另一个答案中偷来的,用于实际设置字符的格式。由于您只想将此文本加粗,因此我从另一个答案中删除了所有其他格式。

Sub FormatCurrentCellPrice()
    FormatPrice Selection
End Sub

Sub FormatPrice(c As Range)
    Dim StartPos As Integer
    Dim EndPos As Integer

    StartPos = InStr(c.Value, "@") + 2
    EndPos = InStr(StartPos, c.Value, " ")
    EndPos = InStr(EndPos + 1, c.Value, " ")
    MakeBold StartPos, EndPos - StartPos
End Sub

Sub MakeBold(StartPos As Integer, charCount As Integer)
    With ActiveCell.Characters(Start:=StartPos, Length:=charCount).Font
        .FontStyle = "Bold"
    End With
End Sub

答案2

如果文本是由公式返回的,则无法格式化单元格文本中的特定字符。但是,您可以使用 VBA 的Evaluate函数来设置文本,然后访问Range.Characters目标单元格的集合以将特定字符设置为粗体。

答案3

如果没有 VBA,您可以对 M9 和 M42 使用绝对引用,如下所示:
="维也纳洲际酒店 @ "&$M$9&" "&$M$42&" 每间每晚"
将单元格格式全部设为粗体

相关内容