1

我正在将一个范围从一个工作簿复制到另一个工作簿。由于源范围中的大部分数据是我需要按值粘贴的公式:

With TargetRange
    .PasteSpecial Paste:=xlPasteAll
    .PasteSpecial Paste:=xlPasteColumnWidths
    .PasteSpecial Paste:=xlPasteValues
End With

问题是 xlPasteValue 破坏了(静态)单元格中的上标格式。如何按值粘贴保留上标格式?

我可以通过 xlPasteAll 重新粘贴这些带有上标格式的静态单元格,但这有点杂乱无章,而且不太容易维护。

4

1 回答 1

2

复制粘贴功能要么在单元格的总对象上作为范围,要么在某些属性上。range.font 属性之一是上标,因此如果将其应用于 COMPLETE 单元格,它将在此处列出并作为文本格式的过去传递。

现在还可以仅将字体格式应用于单元格中的有限字符集。为单个文本字符设置格式的这种“功能”不是直接的范围属性,而是范围(或单元格)中字符的属性。现在这是一件很麻烦的事情。

请参阅此处的一些代码,从记录上标到字符子集的应用:

With rTest.Characters(Start:=1, Length:=2).Font
    .Superscript = True
End With
With rTest.Characters(Start:=3, Length:=2).Font
    .Subscript = False
End With

如果您查看您的(本地人)监视窗口,您会发现未列出 characters 属性。请参阅此处 Microsoft 对 Office 2012 的评价:

http://msdn.microsoft.com/en-us/library/office/ff198232%28v=office.14%29.aspx

“Characters 对象不是一个集合。”

简而言之:您想要的意味着识别具有此“功能”的单元格并xlPasteAll用于这些单元格。似乎无法通过 VBA 查询字符属性。

于 2012-11-13T12:26:58.520 回答