2016-07-06 64 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。你的第二条评论让我到了这个地方。根据你最初的例子,我想到了一个更简单的解决方案,而这个例子确实是不完整的。 –

相关问题