Я надеюсь, что ответ на этот вопрос приведет меня к большему вопросу, который является вопросом VBA, который я разместил на SO.

Если у меня есть несколько строк форматированного текста и я хочу объединить этот контент в одну ячейку и не потерять это форматирование, возможно ли это?

Кажется, я могу либо:

  1. Вставьте несколько строк текста в ячейку (без форматирования).
  2. Выполните вставку, которая сгенерирует несколько ячеек для нескольких строк.

Тем не менее, я хочу сочетание двух.

Моя основная проблема - попытка поместить многострочный HTML в одну ячейку и сохранить форматирование с помощью VBA. Пока что это не удалось.

1 ответ1

0

Это решение имеет всю элегантность балетного танца мусоровоза и так же быстро, как тот же грузовик, застрявший в час пик, но оно работает:

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .