MENU

【VBA】PasteSpecialの使い分けとその貼り付け結果

エクセルのマクロを使用してデータをコピー&ペーストする際、PasteSpecial メソッドを使うと、様々な貼り付けオプションを指定することができます。この記事では、PasteSpecial の使い方とその結果について詳しく解説します。

PasteSpecialの基本的な使い方

PasteSpecial メソッドは、コピーしたデータを特定の形式で貼り付けるために使用します。例えば、値だけを貼り付ける、書式だけを貼り付けるなどが可能です。

基本構文

Range("貼り付け先のセル範囲").PasteSpecial Paste:=xlPasteType
  • 貼り付け先のセル範囲: データを貼り付けるセル範囲を指定します。
  • xlPasteType: 貼り付けの種類を指定します。

PasteSpecialの種類

PasteSpecial メソッドには、以下のような様々な貼り付けオプションがあります。

主要な貼り付けオプション

  1. xlPasteAll: すべて貼り付け
  2. xlPasteValues: 値のみ貼り付け
  3. xlPasteFormats: 書式のみ貼り付け
  4. xlPasteFormulas: 数式のみ貼り付け
  5. xlPasteComments: コメントのみ貼り付け
  6. xlPasteValidation: セルの検証のみ貼り付け
  7. xlPasteColumnWidths: 列幅のみ貼り付け

使用例

以下に、各貼り付けオプションの使用例を示します。

例1:xlPasteValues: 値のみを貼り付ける

Sub PasteValuesExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 値のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteValues
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

例2:xlPasteFormats: 書式のみを貼り付ける

Sub PasteFormatsExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 書式のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

例3:xlPasteFormulas: 数式のみを貼り付ける

Sub PasteFormulasExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 数式のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

例4:xlPasteComments: コメントのみを貼り付ける

Sub PasteCommentsExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' コメントのみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteComments
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

例5:xlPasteValidation: セルの検証のみを貼り付ける

Sub PasteValidationExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' セルの検証のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteValidation
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

例6:xlPasteColumnWidths: 列幅のみを貼り付ける

Sub PasteColumnWidthsExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 列幅のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteColumnWidths
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

実践例: 複数の貼り付けオプションを組み合わせる

PasteSpecial メソッドは複数のオプションを組み合わせて使用することも可能です。例えば、値と書式を一緒に貼り付けたい場合は、以下のようにします。

Sub PasteValuesAndFormatsExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 値と書式を貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteValues
    Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

まとめ

PasteSpecial メソッドを使うことで、エクセルマクロでデータを柔軟に貼り付けることができます。値のみ、書式のみ、数式のみなど、様々なオプションを駆使して、必要に応じた貼り付け処理を実現しましょう。この記事を参考にして、PasteSpecial の使い分け方をマスターし、効率的なデータ操作を行ってください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

自動車メーカーで、VBAやRPAを用いた業務効率化・業務改善を行っております。

目次