replace函数删除格式化vba

时间:2016-09-14 19:10:55

标签: excel vba

enter image description here为什么会删除单元格的格式?我只想替换一个值,但它会删除单元格中所有单词的下划线。

For Each sht In ActiveWorkbook.Worksheets
      sht.Cells.Replace what:=fnd, Replacement:=rplc, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
    Next sht​

1 个答案:

答案 0 :(得分:1)

似乎在Excel 2007中,整个单元格值被替换。如果要替换的值在格式化之间,您可以在单元格值XML中替换它:

Dim r As Range, s As String
Set r = sht.UsedRange.Find(fnd)
s = r.Value(11) ' Excel.XlRangeValueDataType.xlRangeValueXMLSpreadsheet = 11
s = Replace(s, ">" & fnd & "<", ">" & rplc & "<")
r.Value(11) = s

否则你可以尝试这个http://www.mrexcel.com/forum/excel-questions/524889-find-replace-loses-text-properties-formatting.html

Dim r As Range, i As Integer
Set r = sht.UsedRange.Find(fnd)
i = InStr(r.Characters.Text, fnd)
r.Characters(i, Len(fnd)).Insert rplc