【发布时间】:2019-06-22 07:06:36
【问题描述】:
我正在构建一些代码,部分是从其他帖子中剪切和粘贴的。我需要与保持格式的 VBA 代码连接并在行中运行以在每行的最后一个单元格中输出。 (无法粘贴图片)所以希望描述清楚:
- 在 A1:D1 中的值为 RED、BLUE、GREEN
- 在 A2:D2 中的值为黄色、紫色、橙色
OUTPUT IN E1 应该连接这些值,保持字体颜色。每个值都应该有“ALT ENTR”来换行。
下一行应该显示在 E2 中,以此类推
'************************************************************************************
Sub test()
Dim rng As Range: Set rng = Application.Range("a1:c1") 'Not yet looping
Dim row As Range
For Each row In rng.Rows
'Debug.Print col.Column
Call concatenate_cells_formats(Cells(1, 4), rng) 'Not yet looping
Next row
End Sub
Sub concatenate_cells_formats(cell As Range, source As Range)
'Anon
Dim c As Range
Dim i As Integer
i = 1
With cell
.Value = vbNullString
.ClearFormats
For Each c In source
.Value = .Value & " " & Trim(c)
Next c
.Value = Trim(.Value)
For Each c In source
With .Characters(Start:=i, Length:=Len(Trim(c))).Font
.Name = c.Font.Name
.FontStyle = c.Font.FontStyle
.Size = c.Font.Size
.Strikethrough = c.Font.Strikethrough
.Superscript = c.Font.Superscript
.Subscript = c.Font.Subscript
.OutlineFont = c.Font.OutlineFont
.Shadow = c.Font.Shadow
.Underline = c.Font.Underline
.ColorIndex = c.Font.ColorIndex
End With
.Characters(Start:=i + Len(c), Length:=1).Font.Size = 1
i = i + Len(Trim(c)) + 1
Next c
End With
End Sub
'*****************************************************************************
【问题讨论】:
-
你称之为“ALT ENTR”,可以通过将
vbCrLf(回车,换行)连接到您希望新行开始的字符串中来实现,并确保该单元格的.WrapText属性是True -
很棒的东西,就像一个魅力。必须输入“dim i as integer”并更改工作表名称
-
您的程序不包括您指定的要求,即每个值都应具有“ALT ENTER”以进行换行和循环。
-
您指定的范围也在 A1 中:D1 值是红色、蓝色、绿色,其中您的程序提到范围
A1:C1 -
请看我编辑的帖子。我已经修改了您的
Sub test()以允许在范围内循环,并且它使用您首选的连接子例程。
标签: excel vba concatenation