VBAでExcel作業を自動化する際、元データの書式や下線を保持して貼り付けることは重要ですが、特定条件下でxlPasteAllが意図通り動作しないことがあります。特に、ふりがながない文字列のみのセルで下線が消えるケースが報告されています。
問題の原因
Excel VBAでのxlPasteAllは、セルの値、書式、コメントなどを含む全情報をコピーします。しかし、ふりがなが付いていないテキスト(ひらがなやカタカナのみ)では、内部的に書式情報の構造が漢字を含む場合と異なり、下線情報が正しく保持されないことがあります。
これは、Excelがふりがな付き文字に対して独自の書式属性を持つためで、全貼付時に書式情報が一部欠落する結果を招きます。
対処方法
一つの解決策は、コピー時に書式のみを明示的に指定することです。例えば、下線を保持するためには:
SourceRange.Copy DestinationRange
の代わりに、次のように書式を明示的に貼り付けます:
DestinationRange.Value = SourceRange.Value
DestinationRange.Font.Underline = SourceRange.Font.Underline
これにより、ふりがな有無に関わらず下線が保持されます。
補足:TextRangeごとの書式管理
セル内の部分的な下線や文字ごとの書式を保持したい場合は、セルのCharactersプロパティを利用して文字単位で下線情報をコピーします。例:
For i = 1 To SourceRange.Characters.Count
DestinationRange.Characters(i,1).Font.Underline = SourceRange.Characters(i,1).Font.Underline
Next i
これにより、ひらがなやカタカナのみの文でも下線を正確に再現できます。
注意点
xlPasteAllは便利ですが、ふりがなや特殊書式が関係する場合は完全に正確にコピーできないことがあります。部分的に書式を明示的に指定する方法を組み合わせることで、問題を回避できます。
まとめ
VBAで下線付きテキストをコピーする際、漢字を含まないセルではxlPasteAllで下線が消えることがあります。解決策としては、セル全体の値を貼り付けた後に下線情報を明示的にコピーする、またはCharactersプロパティで文字単位の書式をコピーする方法が有効です。これにより、ふりがなの有無に関わらず元データ通りの書式を保持できます。


コメント