在单元格中更改行时,防止重新格式化字符

时间:2016-07-06 15:16:14

标签: vba excel-vba excel

我有一个格式化文本的单元格,其中包含我想用换行替换的某个子字符串。子字符串是带有方括号的[enterkey]。这是此问题Replace HTML tag(</br>) with Alt+Enter in Excel的变体,但我想在更改行后继续格式化。

enter image description here

我使用的代码是一个简单的替换,其中rng2是输入和输出单元格:

public class DepthOfParenthesis {

    public static void main(String[] args) 
    {

        System.out.println(depth());
    }

    static int depth()
    {

        String S = "( ((X)) (((Y))) )";
        int current_max =0;
        int overall_max=0;
        int n =S.length();

        for(int i =0; i<n;i++)
        {
            if(S.charAt(i)=='(')
            {
                current_max++;
                if(current_max>overall_max)

                    overall_max=current_max;

            }
            else if(S.charAt(i)==')')
                {
                    if(current_max>0)
                        current_max--;
                    return -1;

                }       
        }
        if(current_max!=0)
            return -1;
        return overall_max;
    }
}

我的问题

如何在插入换行符时阻止该代码复制上述行的格式?我希望它能够保存格式,只需插入换行符,如图所示。

更多信息

我实际上转换为HTML并返回。我不想添加不必要的细节,但如果人们真的想知道,那是因为我将值存储在Access数据库中,并且我想保留单元格格式。从Access中检索信息时,我希望再次使用正确的格式。此问题仅涉及转换回来。有关详细信息,请参见下图。

enter image description here

1 个答案:

答案 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