1

あるワークブックから別のワークブックに範囲をコピーしています。ソース範囲のデータの多くは数式であるため、値で貼り付ける必要があります。

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

問題は、xlPasteValue が (静的) セルの上付き文字の書式設定を破壊することです。上付き文字の書式設定を保持する値による貼り付けを行うにはどうすればよいですか?

xlPasteAll で上付き文字の書式設定を使用してこれらの静的セルを再貼り付けすることはできますが、これは少し手間がかかり、保守性があまり高くありません。

4

1 に答える 1

2

コピー貼り付け機能は、範囲としてのセルの合計オブジェクトまたは特定のプロパティのいずれかにあります。range.font プロパティの 1 つが上付き文字であるため、これが 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 に答える