2016-07-06 51 views
2

我有一個格式化文本包含特定子字符串的單元格,我想用行更改來替換它。子字符串是帶有方括號的[enterkey]。這是Replace HTML tag(</br>) with Alt+Enter in Excel這個問題的一個變種,但我想在更改該行後繼續格式化。防止在更改單元格中的行時重新格式化字符

enter image description here

我使用的代碼是一個簡單的替換,其中RNG2是輸入和輸出單元:

rng2.Value = Replace(rng2.Value, "[enterkey]", Chr(10)) 

我的問題

我如何防止複製代碼插入換行符時上面的行的格式?我希望它能保存原樣,只需插入一個換行符,如圖所示。


更多信息

實際上,我轉換爲HTML和背部。我不想添加不必要的細節,但如果人們真的想知道,這是因爲我將值存儲在Access數據庫中,並且我想保留單元格格式。當從Access中檢索信息時,我想再次使用正確的格式。這個問題只涉及轉換回來。詳細信息請參見下圖。

enter image description here

+0

可能需要運行如[此酮]的例程(http://stackoverflow.com/questions/11644566/excel-vba-set-bold-specific-text-of-string-into-在完成替換之後,在單元上執行單元)。可能需要使用'Instr'來獲取'Chr(10)'的位置,以便知道哪些字符可以粗體顯示。 –

+0

我認爲預處理字符串會使[enterkey]與文本格式相同,因爲它可能比後處理效率更高,因爲那樣想要的格式就會丟失。可能就像複製[enterkey]之後的第一個字符的格式並使其相同。這樣更換後,格式不會改變。我怎麼能這樣做呢? –

+0

它會總是**大膽**第一行和*斜體*第二行? –

回答

1

經過一番研究,我得到了一些作品。

此代碼:

Sub ReplaceEnterKey() 

Dim rng2 As Range 
Set rng2 = Range("O15") 

Dim iChr As Integer 
iChr = InStr(1, rng2.Value, "[e") 'find beginning of first occurence of "[enterkey]" 

Do Until iChr = 0 'loop until no more occurences found 

    rng2.Characters(iChr, 10).Delete 'remove found occurrence of "[enterkey]" - 10 characters 
    rng2.Characters(iChr, 0).Insert Chr(10) 'insert carriage return where "[enterkey]" used to be 

    iChr = InStr(1, rng2.Value, "[e") 'look for next occurence 

Loop 

End Sub 

創造了這個結果。 N15原來是O15

enter image description here

+0

優秀。這正是需要的。回想起來,你看到我不需要分享所有附加信息;) –

+1

@DavidG。事後總是20/20。你的第二條評論讓我到了這個地方。根據你最初的例子,我想到了一個更簡單的解決方案,而這個例子確實是不完整的。 –

相關問題