
Надеюсь, ответ на этот вопрос поможет мне перейти к более масштабному вопросу по VBA, который я опубликовал на SO.
Если у меня есть несколько строк отформатированного текста и я хочу объединить это содержимое в одну ячейку, не теряя при этом форматирование, возможно ли это?
Кажется, я могу либо:
- Вставьте несколько строк текста в ячейку (неотформатированного).
- Выполните вставку, которая сгенерирует несколько ячеек для нескольких строк.
Однако я хочу, чтобысочетаниеиз двух.
Моя основная проблема заключается в попытке вставить многострочный HTML в одну ячейку и сохранить форматирование через VBA. Пока это не удалось.
решение1
Это решение обладает всей элегантностью танца мусоровоза и столь же быстро, как тот же грузовик, застрявший в пробке в час пик, но оно работает:
j = 1
For Each myRange In Range1
If Range0.Value = vbNullString Then
Range0.Value = myRange.Value
Else
Range0.Value = Range0.Value & Chr$(10) & myRange.Value
End If
Next myRange
For Each myRange In Range1
For i = 1 To myRange.Characters.Count
Range0.Font.Name = myRange.Characters(Start:=j, Length:=1).Font.Name
Range0.Characters(Start:=j, Length:=1).Font.FontStyle = myRange.Characters(Start:=j, Length:=1).Font.FontStyle
Range0.Characters(Start:=j, Length:=1).Font.Size = myRange.Characters(Start:=j, Length:=1).Font.Size
Range0.Characters(Start:=j, Length:=1).Font.Strikethrough = myRange.Characters(Start:=j, Length:=1).Font.Strikethrough
Range0.Characters(Start:=j, Length:=1).Font.Superscript = myRange.Characters(Start:=j, Length:=1).Font.Superscript
Range0.Characters(Start:=j, Length:=1).Font.Subscript = myRange.Characters(Start:=j, Length:=1).Font.Subscript
Range0.Characters(Start:=j, Length:=1).Font.OutlineFont = myRange.Characters(Start:=j, Length:=1).Font.OutlineFont
Range0.Characters(Start:=j, Length:=1).Font.Shadow = myRange.Characters(Start:=j, Length:=1).Font.Shadow
Range0.Characters(Start:=j, Length:=1).Font.Bold = myRange.Characters(Start:=j, Length:=1).Font.Bold
Range0.Characters(Start:=j, Length:=1).Font.Italic = myRange.Characters(Start:=j, Length:=1).Font.Italic
Range0.Characters(Start:=j, Length:=1).Font.Underline = myRange.Characters(Start:=j, Length:=1).Font.Underline
Range0.Characters(Start:=j, Length:=1).Font.Color = myRange.Characters(Start:=j, Length:=1).Font.Color
Range0.Characters(Start:=j, Length:=1).Font.TintAndShade = myRange.Characters(Start:=j, Length:=1).Font.TintAndShade
Range0.Characters(Start:=j, Length:=1).Font.ThemeFont = myRange.Characters(Start:=j, Length:=1).Font.ThemeFont
j = j + 1
Next i
j = j + 1
Next myRange
Где Range0
находится диапазон, в который вы хотите скопировать несколько ячеек, и Range1
содержит все ячейки, которые вы хотите скопировать (примечание: Range0
не может быть подмножеством Range1
)