Makro zum Ersetzen von Text durch harte Zeilenumbrüche in Excel

Makro zum Ersetzen von Text durch harte Zeilenumbrüche in Excel

Wie schreibe ich ein Makro, das nach einem bestimmten Symbol (in Excel) sucht und es durch einen harten Zeilenumbruch in derselben Zelle ersetzt und dabei die Zellintegrität aufrechterhält?

Ich konvertiere häufig Word-Dokumente in Excel und ersetze vor der Konvertierung alle harten Zeilenumbrüche im Word-Dokument durch Rautezeichen (@@), sodass die Zellintegrität bei der Einfügefunktion im Excel-Dokument gewahrt bleibt (wenn Sie die harten Zeilenumbrüche nicht entfernen, wird bei jedem Zeilenumbruch eine neue Zelle erstellt).

Nach dem Einfügen in Excel muss ich dann die "@@"-Zeichen durch harte Zeilenumbrüche ersetzen und kann den "harten Zeilenumbruch" unter "Ersetzen" nicht als Option finden. Ich glaube, dafür ist ein Makro erforderlich.

Vielen Dank für Ihre Hilfe.

Antwort1

Sie können dies tatsächlich mit der Option „Suchen und Ersetzen“ tun.
Ändern Sie Ihren Zellentext in: „Dies @@ ist @@ Ihr @@ Zellen-@@text“.

Gehen Sie dann zu Suchen und Ersetzen und ersetzen Sie @@ (oder was auch immer Sie ersetzen möchten) durch " & char(10) & ". Dadurch ändert sich Ihre Ausgabe von "dies @@ ist @@ Ihr @@ Zellentext" in "dies ist Ihr Zellentext".

Jetzt müssen Sie die Zellen formatieren, um den Zeilenumbruch zu aktivieren (Rechtsklick > Format > Registerkarte Ausrichtung > Zeilenumbruch aktivieren). Ihre neue Ausgabe sollte lauten :
Dies
ist
Ihr
Zellentext

Antwort2

Für ein kurzes Makro:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub

Antwort3

Dies war einer der Top-Treffer bei Google, als ich nach „Excel-Makro für harten Textumbruch“ gesucht habe. Hier ist also meine Lösung zum Umbrechen einer Textzelle basierend auf einer Breite:

Function hardwrap(useThis As Range, WrapAt As Integer) As String
    Dim i As Integer
    Dim Temp As String
    Dim retVal As String
    i = 0
    retVal = useThis.Value
    With useThis
        If Len(.Value) > WrapAt Then
            Temp = retVal
            Do
                i = i + WrapAt
                Do
                    If Mid(Temp, i, 1) = " " Then
                        Temp = Left(Temp, i - 1) & Chr(10) & Right(Temp, Len(Temp) - i)
                        Exit Do
                    Else
                        i = i - 1
                        If i < 0 Then
                            Exit Do
                        End If
                    End If
                Loop
            Loop While i < Len(Temp) - WrapAt
            retVal = Temp
        End If
    End With
    hardwrap = retVal
End Function

Dieser Code basiert stark auf dieser Funktion von Andrew Poulsom, die hier zu finden ist:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

Wenn die Zeichenfolge länger als die Variable „Wrap at“ ist, springt es grundsätzlich zum Wrap-Punkt und marschiert rückwärts, um nach Leerzeichen zu suchen. Wenn es eines findet, ersetzt es dieses Leerzeichen durch eine neue Zeile. Dann wiederholt es den Vorgang für den Rest der Zeichenfolge.

Meine Version ist (meiner Meinung nach) etwas allgemeiner.

Beispiel:

A1:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

Antwort:=hardwrap(A1,40)

"Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est
laborum."

Hoffentlich hilft das.

verwandte Informationen