
Ich hoffe, dass mich die Antwort auf diese Frage zu der umfassenderen Frage führt, einer VBA-Frage, die ich auf SO gepostet habe.
Ist es möglich, mehrere Zeilen formatierten Texts in einer einzigen Zelle zusammenzuführen, ohne die Formatierung zu verlieren?
Es scheint, ich kann entweder:
- Fügen Sie mehrere Textzeilen in eine Zelle ein (nicht formatiert).
- Führen Sie einen Einfügen-Vorgang durch, der mehrere Zellen für mehrere Zeilen generiert.
Ich möchte jedoch dieKombinationvon den beiden.
Mein eigentliches Problem ist der Versuch, mehrzeiliges HTML in eine einzelne Zelle zu packen und die Formatierung über VBA beizubehalten. Bisher war das nicht erfolgreich.
Antwort1
Diese Lösung hat die Eleganz eines Müllwagen-Balletttanzes und ist so schnell wie der gleiche Lastwagen, der im Berufsverkehr feststeckt, aber sie funktioniert:
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
Wobei Range0
der Bereich ist, in den Sie mehrere Zellen kopieren möchten, und der Range1
alle Zellen enthält, die Sie kopieren möchten (Hinweis: Range0
darf keine Teilmenge von sein Range1
)