2012-11-13 48 views
1

我正在複製範圍從一個工作簿到另一個。儘可能多的在源範圍中的數據的是式I需要由值粘貼:保留上標格式上.PasteSpecial

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

問題是xlPasteValue破壞了(靜態)細胞中的標格式。我如何通過保留上標格式的值進行粘貼?

我可以通過xlPasteAll重新粘貼那些帶有上標格式的靜態單元格,但這有點混亂,並且不可維護。

+0

沒有簡單的解決方案,在運行粘貼值之後循環遍歷複製範圍,然後複製所有靜態單元格(或者測試sub/superscript並僅複製這些單元格,但這會變慢,取決於根據您的數據量) –

回答

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 

如果你看看你的(當地人)監視窗口,你將看到的人物屬性沒有列出。在這裏看到微軟稱這個爲Office 2012:

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

「的人物對象不是一個集合。」

簡而言之:你想要什麼意思是用這個「特徵」來標識單元格,並且這些單元格是xlPasteAll。字符屬性不能像VBA那樣通過查詢。

+0

到最後一點:是的 - 它可以非常直接地確定單元格中的哪些(如果有)字符應用了子/上標,只需循環每個字符並檢查其中的「.Font .Subscript'或'.Font.Superscript'屬性。 –

+0

對於這個令人費解的評論感到抱歉,同意Tim Williams,我的意思是在細胞/範圍物體的層面上沒有可能性 –