大体でIT
大体でIT
2021/2/13
Excel VBAで、形式を選択して貼り付ける方法について、ご紹介します。形式を選択して貼り付けるには、「PasteSpecial」を使います。値だけでなく、書式や列幅も貼り付けることができるので、便利です。具体的なVBAコードを使って、解説していきます。
この記事では、形式を選択して貼り付ける方法について、ご紹介します。
形式を選択して貼り付けるには、「PasteSpecial」を使います。
「PasteSpecial」の形式を変更して、「すべて」や「書式のみ」を貼り付けることができます。
値だけでなく、書式や列幅も貼り付けたい場合に、便利です。
では、形式を選択して貼り付ける方法について、解説していきます。
VBAで形式を選択して、貼り付けるには、「PasteSpecail」を使います。
形式を選択して貼り付けは、Excelでいうと次の画面で設定するものです。
この形式を選択して貼り付けを、VBAでやってみます。
形式を選択して貼り付ける、PasteSpecialは、次のように入力して使います。
「セル.PasteSpecial Paste:=形式」
すべて(xlPasteAll)
数式(xlPasteFormulas)
値(xlPasteValues)
書式(xlPasteFormats)
コメントとメモ(xlPasteComments)
入力規則(xlPasteValidation)
コピー元のテーマを使用してすべて貼り付け(xlPasteAllUsingSourceTheme)
罫線を除くすべて(xlPasteAllExceptBorders)
列幅(xlPasteColumnWidths)
数式と数値の書式(xlPasteFormulasAndNumberFormats)
値と数値の書式(xlPasteValuesAndNumberFormats)
すべての結合されている条件付き書式(xlPasteAllMergingConditionalFormats)
また、次のように「Transpose」を使うことで、貼り付ける値を「転置」することができます。
「セル.PasteSpecial Paste:=形式, Transpose:=True」
PasteSpecialのそれぞれの形式で、貼り付けてみます。
引数には、「Paste:=xlPasteAll」を使います。
Sub TEST1()
'コピー
Range("A1").CurrentRegion.Copy
'すべて
Range("D1").PasteSpecial Paste:=xlPasteAll
End Sub
セルに値や書式を入力
「すべて」で貼り付け
引数には、「Paste:=xlPasteFormulas」を使います。
Sub TEST2()
'コピー
Range("A1").CurrentRegion.Copy
'数式
Range("D1").PasteSpecial Paste:=xlPasteFormulas
End Sub
セルに数式を入力
「数式」で貼り付け
引数には「Paste:=xlPasteValues」を使います。
Sub TEST3()
'コピー
Range("A1").CurrentRegion.Copy
'値
Range("D1").PasteSpecial Paste:=xlPasteValues
End Sub
セルに数式を入力
「値」で貼り付け
引数には、「Paste:=xlPasteFormats」を使います。
Sub TEST4()
'コピー
Range("A1").CurrentRegion.Copy
'書式
Range("D1").PasteSpecial Paste:=xlPasteFormats
End Sub
セルに値や書式を入力
「書式」で貼り付け
引数には、「Paste:=xlPasteComments」を使います。
Sub TEST5()
'コピー
Range("A1").CurrentRegion.Copy
'コメントとメモ
Range("D1").PasteSpecial Paste:=xlPasteComments
End Sub
セルにメモを入力
「コメントとメモ」で貼り付け
形式を「コメントとメモ」として貼付けができました。
引数には、「Paste:=xlPasteValidation」を使います。
Sub TEST6()
'コピー
Range("A1").CurrentRegion.Copy
'入力規則
Range("D1").PasteSpecial Paste:=xlPasteValidation
End Sub
セルに入力規則を入力
「入力規則」で貼り付け
形式を「コピー元のテーマを使用してすべて貼り付け」で貼り付けてみます。
引数には、「Paste:=xlPasteAllUsingSourceTheme」を使います。
Sub TEST7()
'コピー
Range("A1").CurrentRegion.Copy
'コピー元のテーマを使用してすべて貼り付け
Range("D1").PasteSpecial Paste:=xlPasteAllUsingSourceTheme
End Sub
セルに値や書式を入力
「コピー元のテーマを使用してすべて貼り付け」で貼り付け
形式を「コピー元のテーマを使用してすべて貼り付け」として貼付けができました。
この「コピー元のテーマを使用してすべて貼り付け」は使わなくても良さそうです。
引数には、「Paste:=xlPasteAllExceptBorders」を使います。
Sub TEST8()
'コピー
Range("A1").CurrentRegion.Copy
'罫線を除くすべて
Range("D1").PasteSpecial Paste:=xlPasteAllExceptBorders
End Sub
セルに罫線や数式を入力
「罫線を除くすべて」で貼り付け
形式を「罫線を除くすべて」として貼付けができました。
引数には、「Paste:=xlPasteColumnWidths」を使います。
Sub TEST9()
'コピー
Range("A1").CurrentRegion.Copy
'列幅
Range("D1").PasteSpecial Paste:=xlPasteColumnWidths
End Sub
セルの列幅を変更
「列幅」で貼り付け
引数には、「Paste:=xlPasteFormulasAndNumberFormats」を使います。
Sub TEST10()
'コピー
Range("A1").CurrentRegion.Copy
'数式と数値の書式
Range("D1").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
End Sub
セルに数式を入力
「数式と数値の書式」で貼り付け
形式を「数式と数値の書式」として貼付けができました。
引数には、「Paste:=xlPasteValuesAndNumberFormats」を使います。
Sub TEST11()
'コピー
Range("A1").CurrentRegion.Copy
'値と数値の書式
Range("D1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End Sub
セルに数式を入力
「値と数値の書式」で貼り付け
形式を「値と数値の書式」として貼付けができました。
形式を「すべての結合されている条件付き書式」で貼り付けてみます。
引数には、「Paste:=xlPasteAllMergingConditionalFormats」を使います。
Sub TEST12()
'コピー
Range("A1").CurrentRegion.Copy
'全ての結合されている条件付き書式
Range("D1").PasteSpecial Paste:=xlPasteAllMergingConditionalFormats
End Sub
セルに条件付き書式を設定
「すべての結合されている条件付き書式」で貼り付け
形式を「すべての結合されている条件付き書式」として貼付けができました。
ただ、この「すべての結合されている条件付き書式」も、「すべて」の形式と違いがわかりません。
転置して貼付けは、「Traspose:=True」を入力するとできます。
Sub TEST13()
'コピー
Range("A1").CurrentRegion.Copy
'転置して貼り付け
Range("D1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
End Sub
セルに値や書式を入力
「転置」して貼り付け
PasteSpecialは形式を組み合わせて、貼り付けすることもできます。
形式を「すべて」と「列幅」を組み合わせて、貼り付けてみます。
形式を「すべて」と「列幅」を組み合わせて、貼り付けするには次のように2つ「PasteSpecial」を使います。
Sub TEST14()
'コピー
Range("A1").CurrentRegion.Copy
'すべて
Range("D1").PasteSpecial Paste:=xlPasteAll
'列幅
Range("D1").PasteSpecial Paste:=xlPasteColumnWidths
End Sub
「すべて」の「Paste:=xlPasteAll」と、「列幅」の「Paste:=xlPasteColumnWidths」を組み合わせています。
列幅を変更して値や書式を入力
「すべて」+「列幅」を貼り付け
こんな感じで、形式の「すべて」と「列幅」を組み合わせることもできます。
「PasteSpecail」は、別シートに貼り付ける際に、別シートをアクティブにしなくても、貼り付けることができます。
PasteSpecialで別シートに「すべて」を貼り付けてみます。
Sub TEST15()
'Sheet1をコピー
Worksheets("Sheet1") .Range("A1").CurrentRegion.Copy
'Sheet2に貼り付け
Worksheets("Sheet2") .Range("A1").PasteSpecial Paste:=xlPasteAll
End Sub
「Sheet1」のセルに値と書式を入力しておきました。
Sheet1に値と書式を入力
Sheet2に貼り付け
Sheet2のセルに値と書式のすべてを貼り付けられました。
Sheet2をアクティブにすることなく、セルを貼付けすることができます。
この記事では、形式を選択して貼り付ける方法について、ご紹介しました。
形式を選択して貼り付けるには、「PasteSpecial」を使います。
「PasteSpecial」の形式を変更して、「すべて」や「書式のみ」を貼り付けることができます。
値だけでなく、書式や列幅も貼り付けたい場合に、便利です。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。