replacefunction删除格式化vba

在这里输入图像说明 为什么这会删除单元格的格式? 我只想replace一个值,但是它删除了单元格内所有单词的下划线。

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​ 

似乎在Excel 2007中,整个单元格值被replace。 如果要replace的值在格式化之间,则可以将其replace为单元格值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