我正在将一个范围从一个工作簿复制到另一个工作簿。源范围中的大部分数据都是公式,我需要按值粘贴:
With TargetRange
.PasteSpecial Paste:=xlPasteAll
.PasteSpecial Paste:=xlPasteColumnWidths
.PasteSpecial Paste:=xlPasteValues
End With
问题是xlPasteValue破坏了(静态)单元格中的上标格式。如何按值保留上标格式?
我可以通过xlPasteAll重新粘贴那些带有上标格式的静态单元格,但这有点像kludge并且不是非常可维护。
答案 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查询字符属性。