【发布时间】:2020-08-07 01:30:28
【问题描述】:
我正在使用下面的代码将两个相邻的单元格与换行符合并,但我想保留第一个带有下划线的单元格的源格式。如何在下面的代码中嵌入代码行以保持第一个单元格的下划线格式。请看下图,我需要这样的东西。
但当前宏只是合并,不保留下划线格式。
我还需要将单个单元格中的结果与源格式合并。
Sub linebreak()
Dim myRange As Range
Set myRange = Range("K2:K51") 'Set the range of the first column cells
For Each c In myRange.Cells
If c.Value <> "" Then
'Concatenate in 3rd column
If c.Offset(0, 1).Value = "" Then
c.Offset(0, 2).Value = c.Value
Else
c.Offset(0, 2).Value = c.Value & Chr(10) & c.Offset(0, 1).Value
'Apply formatting with preserving colors
c.Offset(0, 2).Characters(Len(CStr(c.Value)) + 2, Len(CStr(c.Offset(0, 1).Value))).Font.Color = c.Offset(0, 1).Font.Color
c.Offset(0, 2).Characters(Len(CStr(c.Value)) + 2, Len(CStr(c.Offset(0, 1).Value))).Font.Italic = c.Offset(0, 1).Font.Italic
c.Offset(0, 2).Characters(Len(CStr(c.Value)) + 2, Len(CStr(c.Offset(0, 1).Value))).Font.Bold = c.Offset(0, 1).Font.Bold
End If
End If
Next c
End Sub
【问题讨论】:
-
您不能连接文本并保持其格式。你需要通过它的字符。 Here 就是一个例子。
-
@JvdV:他不能在由公式产生的文本中做到这一点。但他可以做一个普通的串联......
-
那会很容易出错@FaneDuru(“错误”在不需要的结果中)
-
@JvdV:一点也不,如果你知道你在做什么,我想。请看我的回答。
-
@FaneDuru。如果
c.Offset(0,1)有下划线/粗体/斜体或任何其他格式(甚至每个字符)怎么办。我总是选择迭代字符来保存。除非在 OP 的情况下,左列是 only 值,可以格式化为 whole。即使你知道自己在做什么,这也是一个危险的假设。
标签: excel vba excel-formula