Excel 在.PasteSpecial上保留上标格式

Excel 在.PasteSpecial上保留上标格式,excel,vba,formatting,copy-paste,superscript,Excel,Vba,Formatting,Copy Paste,Superscript,我正在将一个范围从一个工作簿复制到另一个工作簿。由于源范围中的大部分数据是我需要按值粘贴的公式: With TargetRange .PasteSpecial Paste:=xlPasteAll .PasteSpecial Paste:=xlPasteColumnWidths .PasteSpecial Paste:=xlPasteValues End With 问题是xlPasteValue会破坏(静态)单元格中的上标格式。如何按保留上标格式的值进行粘贴 我可以通过x

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

With TargetRange
    .PasteSpecial Paste:=xlPasteAll
    .PasteSpecial Paste:=xlPasteColumnWidths
    .PasteSpecial Paste:=xlPasteValues
End With
问题是xlPasteValue会破坏(静态)单元格中的上标格式。如何按保留上标格式的值进行粘贴


我可以通过xlpaste重新粘贴所有带有上标格式的静态单元格,但这有点麻烦,而且维护性不强。

复制粘贴功能可以在单元格的整个对象上作为一个范围,也可以在某些属性上。其中一个range.font属性是上标,所以如果将其应用于整个单元格,它将在此处列出,并作为文本格式的过去传递

现在还可以只对单元格中的有限字符集应用字体格式。设置单个文本字符格式的“功能”不是直接范围属性,而是范围(或单元格)中字符的属性。现在这是一件棘手的事情

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

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的说明:

“Characters对象不是集合。”


简而言之:您想要的是识别具有此“功能”的单元格,并为这些单元格设置
xlPasteAll
。字符属性似乎无法通过VBA进行查询。

没有简单的解决方案,除非在运行粘贴值后在复制的范围内循环,然后在所有静态单元格上复制(或者测试sub/superscript并只复制它们,但速度会慢一些,这取决于您拥有的数据量)最后一点:是的,它可以-很容易确定哪一个(如果有的话)单元格中的字符应用了sub/superscript,只需在每个字符之间循环并检查其
.Font.Subscript
.Font.superscript
属性即可。Tim Williams同意,对于令人信服的评论,我的意思是在单元格/范围对象的级别上不存在任何可能性