VBA 値の貼り付けとPasteSpecial

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 30, 2022

In this Article

このチュートリアルでは、VBAでPasteSpecialを使用して、特定のセルのプロパティ(例:値、書式)だけを貼り付ける方法を説明します。

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste values number formats jp
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
vba paste values jp

パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。

では、数値の書式も一緒に貼り付けてみましょう。

Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba paste special menu excel jp

ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。

「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、VBAを使用して「形式を選択して貼り付け」を行う最も簡単な方法です。

値の貼り付け

値の貼り付けは、セルの「値」のみを貼り付けます。セルに数式が含まれていた場合、数式の結果を貼り付けます。

このコードでは、同じワークシート上の1つのセルに対して値をコピー&ペーストします。

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
異なるシートへのコピーと値の貼り付け

この例では、異なるワークシートの単一セルの値をコピー&ペーストします。

 

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues

これらの例は、セル範囲の値をコピー&ペーストするものです。

範囲のコピーと値の貼り付け

Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues

列のコピーと値の貼り付け

Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues

行のコピーと値の貼り付け

Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues

値の貼り付けと数値の書式

値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。

値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。

ここでは、パーセント表示のセルを貼り付けます。

vba paste values number formats jp
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
vba paste values jp

パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。

では、数値の書式も一緒に貼り付けてみましょう。

Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp

Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。

vba copy pastejp

しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。

vba paste special menu excel jp

ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。

「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、VBAを使用して「形式を選択して貼り付け」を行う最も簡単な方法です。

値の貼り付け

値の貼り付けは、セルの「値」のみを貼り付けます。セルに数式が含まれていた場合、数式の結果を貼り付けます。

このコードでは、同じワークシート上の1つのセルに対して値をコピー&ペーストします。

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues

異なるシートへのコピーと値の貼り付け

この例では、異なるワークシートの単一セルの値をコピー&ペーストします。

 

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues

これらの例は、セル範囲の値をコピー&ペーストするものです。

範囲のコピーと値の貼り付け

Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues

列のコピーと値の貼り付け

Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues

行のコピーと値の貼り付け

Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues

値の貼り付けと数値の書式

値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。

値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。

ここでは、パーセント表示のセルを貼り付けます。

vba paste values number formats jp
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
vba paste values jp

パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。

では、数値の書式も一緒に貼り付けてみましょう。

Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp

Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。

vba copy pastejp

しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。

vba paste special menu excel jp

ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。

「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、VBAを使用して「形式を選択して貼り付け」を行う最も簡単な方法です。

値の貼り付け

値の貼り付けは、セルの「値」のみを貼り付けます。セルに数式が含まれていた場合、数式の結果を貼り付けます。

このコードでは、同じワークシート上の1つのセルに対して値をコピー&ペーストします。

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues

異なるシートへのコピーと値の貼り付け

この例では、異なるワークシートの単一セルの値をコピー&ペーストします。

 

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues

これらの例は、セル範囲の値をコピー&ペーストするものです。

範囲のコピーと値の貼り付け

Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues

列のコピーと値の貼り付け

Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues

行のコピーと値の貼り付け

Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues

値の貼り付けと数値の書式

値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。

値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。

ここでは、パーセント表示のセルを貼り付けます。

vba paste values number formats jp
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
vba paste values jp

パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。

では、数値の書式も一緒に貼り付けてみましょう。

Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp

Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。

vba copy pastejp

しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。

vba paste special menu excel jp

ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。

「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、VBAを使用して「形式を選択して貼り付け」を行う最も簡単な方法です。

値の貼り付け

値の貼り付けは、セルの「値」のみを貼り付けます。セルに数式が含まれていた場合、数式の結果を貼り付けます。

このコードでは、同じワークシート上の1つのセルに対して値をコピー&ペーストします。

Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues

異なるシートへのコピーと値の貼り付け

この例では、異なるワークシートの単一セルの値をコピー&ペーストします。

 

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet2").Range("B1").PasteSpecial Paste:=xlPasteValues

これらの例は、セル範囲の値をコピー&ペーストするものです。

範囲のコピーと値の貼り付け

Range("A1:B3").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues

列のコピーと値の貼り付け

Columns("A").Copy
Columns("B").PasteSpecial Paste:=xlPasteValues

行のコピーと値の貼り付け

Rows(1).Copy
Rows(2).PasteSpecial Paste:=xlPasteValues

値の貼り付けと数値の書式

値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。

値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。

ここでは、パーセント表示のセルを貼り付けます。

vba paste values number formats jp
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
vba paste values jp

パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。

では、数値の書式も一緒に貼り付けてみましょう。

Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
vba paste special values number formats jp

パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。

.Pasteの代わりに.Valueを使用する

Paste Valuesの代わりに、RangeオブジェクトのValueプロパティを使うこともできます。

この例は、A2のセルに、B2のセルの値をコピーします。

Range("A2").Value = Range("B2").Value

また、1つのセルの値を、セル範囲にコピーすることもできます。

Range("A2:C5").Value = Range("A1").Value

さらに、セル範囲の値を、同じ大きさの別のセル範囲にコピーすることもできます。

Range("B2:D4").Value = Range("A1:C3").Value

Valueプロパティを使った方が入力が少なくて済みます。Excel VBAを使いこなすには、セルのValueプロパティの扱いにも慣れておくとよいでしょう。

セルのValueとValue2プロパティの比較

技術的には、セルのValue2プロパティを使用する方が良いとされています。Value2の方が若干高速で(これは極めて大規模な計算の場合のみ)、Valueプロパティはセルが通貨や日付でフォーマットされている場合、切り捨てられた結果が得られるかもしれません。 しかし、私が見てきたコードの99%以上は、.Valueを使用しており、.Value2を使っていません。 私自身も.Value2は使用しませんが、その存在は知っておくべきでしょう。

Range("A2").Value2 = Range("B2").Value2

Copy Paste Builder

セルをコピー(またはカット)して貼り付けるためのVBAコードを簡単に生成できる「Copy Paste Code Builder」を作成しました。このツールは、VBAアドインAutoMacroに含まれています。

vba copy paste helper

AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。

PasteSpecialのフォーマットと計算式

値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。

書式の貼り付け

書式を貼り付けると、すべてのセルの書式を貼り付けることができます。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats

数式の貼り付け

数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas

数式と数値の書式の貼り付け

上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。

vba paste special formulas jp

まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
vba paste special formulas formats jp

書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。

今度は、数式と書式を貼り付けてみましょう。

Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
vba paste special formulas numberformatting jp

これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。

形式を選択して貼り付け – 移植と空白のスキップ

形式を選択して貼り付け – 転置

貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
vba paste special transpose jp
vba transpose jp

形式を選択して貼り付け – 空白をスキップする

空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。

この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。

Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
vba value paste skip blanks jp
vba skip blanks jp

その他の貼り付けオプション

形式を選択して貼り付け – コメント

Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
vba paste special comments jp
vba paste comments jp

形式を選択して貼り付け – 入力規則

vba paste special validation jp
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
vba paste validation jp

形式を選択して貼り付け – 全てソーステーマを使用

vba paste special allusingsourcetheme jp
Workbooks(1).Sheets("Sheet1").Range("A1:A2").Copy
Workbooks(2).Sheets("Sheet1").Range("A1").PasteSpecial
Workbooks(2).Sheets("Sheet1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

形式を選択して貼り付け – 罫線を除くすべて

Range("B2:C3").Copy
Range("E2").PasteSpecial
Range("H2").PasteSpecial xlPasteAllExceptBorders
vba paste special allexceptborders jp

形式を選択して貼り付け – 列の幅

個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。

Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
vba paste special column widths jp

形式を選択して貼り付け – すべての結合されている条件付き書式

vba paste special allmergingconditionalformats jp
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
vba paste special formats jp
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples