="InterContinental Vienna @ "&M9&" "&M42&" p/room p/night"
根据上述示例,M9 = EUR 且 M42 = 150
我寻找的结果是:
InterContinental Vienna @
EUR 150
p/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&" 每间每晚"
将单元格格式全部设为粗体