用於在 Excel 中用硬回車替換文字的宏

用於在 Excel 中用硬回車替換文字的宏

我將如何編寫一個巨集來搜尋特定符號(在 Excel 中)並將其替換為同一單元格中的硬回車並保持單元格完整性?

我經常將Word文件轉換為Excel,在轉換之前,我將Word文件中的所有硬回車替換為井號(@@),以便在Excel文件中的貼上功能上保持單元格完整性(如果您不這樣做)刪除硬返回,每次返回時都會建立一個新單元格)。

貼到Excel後,我需要用硬回車替換“@@”符號,但我在“替換”下找不到“硬回車”作為選項。我相信需要一個宏來做到這一點。

謝謝你提供的所有協助。

答案1

實際上,您可以使用尋找和替換選項來完成此操作。
將您的儲存格文字變更為:「這個@@是@@您的@@儲存格@@文字」。

然後去尋找並替換並將@@(或任何您想要替換的內容)替換為“&char(10)&”。這會將您的輸出從“this @@ is @@ your @@ cell @@ text”更改為“this is your cell text”。

現在您需要設定儲存格格式以啟用自動換行(右鍵單擊>格式>對齊標籤>檢查自動換行)。您的新輸出應該是:


您的
單元格
文本

答案2

對於一個簡短的巨集:

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

答案3

當我搜尋「硬換行文字Excel巨集」時,這是Google的熱門搜尋之一...所以這是我根據寬度換行文字單元格的解決方案:

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

這段程式碼很大程度上是基於 Andrew Poulsom 的這個函數:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

基本上,如果字串比變數的換行長,它會向前跳到換行點,然後向後尋找空格。當它找到一個時,它會用換行符號替換該空格。然後重複此過程以保持弦的平衡。

我的版本比較通用一些(恕我直言)。

例子:

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

希望有幫助。

相關內容