在.PasteSpecial上保留上标格式

时间:2012-11-13 10:09:50

标签: excel vba formatting copy-paste superscript

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

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

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

我可以通过xlPasteAll重新粘贴那些带有上标格式的静态单元格,但这有点像kludge并且不是非常可维护。

1 个答案:

答案 0 :(得分: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查询字符属性。