makro do zastępowania tekstu twardymi zwrotami w programie Excel

0

Jak napisać makro, które szukałoby określonego symbolu (w programie Excel) i zamieniło go na twardy powrót w tej samej komórce i utrzymywało integralność komórki?

Często przekształcam dokumenty tekstowe w program Excel i przed konwersją zastępuję wszystkie twarde zwroty w dokumencie tekstowym znakami funta (@@), aby zachować integralność komórki w funkcji wklejania w dokumencie programu Excel (jeśli nie usunąć twarde zwroty, przy każdym zwrocie tworzona jest nowa komórka).

Po wklejeniu do programu Excel muszę zastąpić znaki „@@” twardymi zwrotami i nie mogę znaleźć „twardego zwrotu” jako opcji w polu „zamień”. Uważam, że do tego potrzebne jest makro.

Dzięki za wszelką pomoc, której możesz udzielić.

Kathy Taylor
źródło

Odpowiedzi:

0

Możesz to zrobić za pomocą opcji znajdź i zamień.
Zmień tekst komórki na: = "ten @@ to @@ twój @@ komórka @@ tekst".

Następnie znajdź i zamień i zamień @@ (lub cokolwiek, co chcesz zastąpić) na „& char (10) &”. Spowoduje to zmianę wyniku z „this @@ is @@ your @@ cell @@ text” na „this is your cell text”.

Teraz musisz sformatować komórki, aby włączyć zawijanie słów (kliknij prawym przyciskiem myszy> Formatuj> karta Wyrównanie> Sprawdź zawijanie słów). Twój nowy wynik powinien być:
To
jest tekst
twojej
komórki

slow_excellence
źródło
0

Krótkie makro:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub
Uczeń Gary'ego
źródło
0

To było jedno z największych przebojów w Google, kiedy szukałem „makra tekstu z zawijaniem Excela”… więc oto moje rozwiązanie do zawijania komórki tekstu na podstawie szerokości:

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

Ten kod jest w dużej mierze oparty na tej funkcji Andrew Poulsom'a znalezionej tutaj: http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

Zasadniczo, jeśli ciąg jest dłuższy niż zawijanie w zmiennej, przeskakuje do przodu do punktu zawijania i maszeruje do tyłu w poszukiwaniu spacji. Kiedy ją znajdzie, zamienia tę przestrzeń na nową linię. Następnie powtarza się dla równowagi łańcucha.

Moja wersja jest trochę bardziej ogólna (IMHO).

Przykład:

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."

A2: =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."

Mam nadzieję, że to pomaga.

phyatt
źródło