vba连接单元格并保持粗体格式

时间:2017-10-25 21:15:09

标签: excel-vba concatenation vba excel

我找了几个小时才能得到满意的答案,而且找不到一个,所以我自己动手了。

例如,假设单元格A1 =" word1",A2 =" word2 ",A3 =" word3"和A4 =" word4。"

我希望B1成为" word1 word2 word3 word4"

如果A列中没有,任何或所有单词都是粗体,我希望它反映在B1中。像这样:

partial sheet image

Sub test1()

Dim Row As Integer
Dim Start As Integer
Dim Length As Integer

        ' concatenate the words with a space between each
    Range("B1").Value = ""
    For Row = 1 To 4
        Range("B1").Value = Range("B1").Value & " " & Cells(Row, "A").Value
    Next Row

        ' match bold formatting
    Start = 1
    For Row = 1 To 4
        Length = Len(Cells(Row, "A").Value)
        Range("B1").Characters(Start, Length + 1).Font.Bold = Cells(Row, "A").Font.Bold
        Start = Start + Length + 1
    Next Row

End Sub

我发现我需要两个独立的循环来完成这项工作。使用一个循环,Excel在第一个粗体后面的所有单词都加粗,除了最后一个单词(如果它不是粗体)。

为什么我需要在上面的代码中使用(Start,Length + 1)?

1 个答案:

答案 0 :(得分:0)

我知道这不是一个确切的答案,但也许可以为您提供想法:

ResourceChangeListener

您需要找到如何使用符合您需求的功能设置“开始”和“长度”值。

With ActiveCell.Characters(Start:=13, Length:=6).Font .FontStyle = "Bold" End With 的使用使得在开始之前选择单元格中的所有文本。