VBA 値の貼り付けとPasteSpecial
In this Article
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 罫線を除くすべて
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 全てソーステーマを使用
- 形式を選択して貼り付け – 罫線を除くすべて
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 全てソーステーマを使用
- 形式を選択して貼り付け – 罫線を除くすべて
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 入力規則
- 形式を選択して貼り付け – 全てソーステーマを使用
- 形式を選択して貼り付け – 罫線を除くすべて
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- 形式を選択して貼り付け – 入力規則
- 形式を選択して貼り付け – 全てソーステーマを使用
- 形式を選択して貼り付け – 罫線を除くすべて
- 形式を選択して貼り付け – 列の幅
- 形式を選択して貼り付け – すべての結合されている条件付き書式
- その他の貼り付けオプション
- その他の貼り付けオプション
- その他の貼り付けオプション
- その他の貼り付けオプション
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 値の貼り付け
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 値の貼り付け
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 値の貼り付け
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
- 値の貼り付け
- PasteSpecialのフォーマットと計算式
- 形式を選択して貼り付け – 移植と空白のスキップ
- その他の貼り付けオプション
このチュートリアルでは、VBAでPasteSpecialを使用して、特定のセルのプロパティ(例:値、書式)だけを貼り付ける方法を説明します。
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。
では、数値の書式も一緒に貼り付けてみましょう。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。
「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、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
値の貼り付けと数値の書式
値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。
値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。
ここでは、パーセント表示のセルを貼り付けます。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。
では、数値の書式も一緒に貼り付けてみましょう。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。
しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。
ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。
「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、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
値の貼り付けと数値の書式
値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。
値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。
ここでは、パーセント表示のセルを貼り付けます。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。
では、数値の書式も一緒に貼り付けてみましょう。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。
しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。
ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。
「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、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
値の貼り付けと数値の書式
値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。
値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。
ここでは、パーセント表示のセルを貼り付けます。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。
では、数値の書式も一緒に貼り付けてみましょう。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats
Excel では、セルをコピーして貼り付けると、そのセルのすべてのプロパティ(値、書式、数式、数値の書式、枠線など)をコピーして貼り付けることになります。
しかし、「形式を選択して貼り付け」を使用すると、特定のセルのプロパティだけを貼り付けることができます。Excelでは、セルをコピーした後、CTRL + ALT + Vのショートカットキーで「形式を選択して貼り付け」メニューにアクセスすることができます。
ここでは、貼り付け可能なプロパティのすべての組み合わせを見ることができます。
「形式を選択して貼り付け」メニューを使用中にマクロを記録した場合、生成されたコードをそのまま使用することができます。これは、多くの場合、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
値の貼り付けと数値の書式
値の貼り付けは、セルの値のみを貼り付けます。数値の書式設定も含め、書式設定は貼り付けられません。
値を貼り付ける場合、値の書式を維持するために数値の書式設定も一緒に貼り付けたい場合がよくあります。例を見てみましょう。
ここでは、パーセント表示のセルを貼り付けます。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues。
パーセント表示の書式が失われ、バラバラに小数値が表示されていることに注意してください。
では、数値の書式も一緒に貼り付けてみましょう。
Sheets("Sheet1").Columns("D").Copy
Sheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
パーセント表示の書式を維持したまま、値も正しく貼り付けられていることが分かります。
.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に含まれています。
AutoMacroその他、多数のコードジェネレータ、豊富なコードライブラリ、強力なコーディングツールを備えています。
PasteSpecialのフォーマットと計算式
値の貼り付けに次いでよく使われる貼り付けオプションは、「書式の貼り付け」と「数式の貼り付け」です。
書式の貼り付け
書式を貼り付けると、すべてのセルの書式を貼り付けることができます。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormats
数式の貼り付け
数式を貼り付けると、セルの数式だけを貼り付けます。セルの数式はコピーしたいが、セルの背景色(または他のセルの書式設定)はコピーしたくない場合などに非常に便利です。
Range("A1:A10").Copy
Range("B1:B10").PasteSpecial Paste:=xlPasteFormulas
数式と数値の書式の貼り付け
上記の値と書式の貼り付けと同様に、数式と書式を同時にコピー&ペーストすることもできます。
まずは、会計の書式と数式をコピーして、数式のみ貼り付けてみます。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas
書式が失われ、代わりに丸められないずさんな値が表示されていることに注意してください。
今度は、数式と書式を貼り付けてみましょう。
Sheets("Sheet1").Range("D3").Copy
Sheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats
これで、書式も貼り付けられ、会計の書式が維持されていることがわかります。
形式を選択して貼り付け – 移植と空白のスキップ
形式を選択して貼り付け – 転置
貼り付け時に、行と列を入れ替えて(セルの向きを上下方向と左右方向を入れ替えて)コピー&ペーストすることができます。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial Transpose:=True
形式を選択して貼り付け – 空白をスキップする
空白をスキップは、あまり使われていないようですが、貼り付けの特殊オプションです。 これを使うと、コピー&ペーストの際に空白でないセルだけをコピーすることができます。つまり、空白のセルはコピーされないのです。
この下の例ではA列をコピーし、B列に通常の貼り付けを行い、C列に空白を飛ばして貼り付けることにします。下の画像では、C列に空白セルが貼り付けられていないことが分かります。
Sheets("Sheet1").Range("A1:A5").Copy
Sheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=False
Sheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True
その他の貼り付けオプション
形式を選択して貼り付け – コメント
Sheets("Sheet1").Range("A1").Copy
Sheets("Sheet1").Range("E1").PasteSpecial xlPasteComments
形式を選択して貼り付け – 入力規則
Sheets("Sheet1").Range("A1:A4").Copy
Sheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation
形式を選択して貼り付け – 全てソーステーマを使用
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
形式を選択して貼り付け – 列の幅
個人的に気に入っているのがこの機能です。PasteSpecial Column Widthsは、列の幅をコピーして貼り付けます。
Range("A1:A2").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteColumnWidths
形式を選択して貼り付け – すべての結合されている条件付き書式
Range("A1:A4").Copy
Range("C1").PasteSpecial
Range("E1").PasteSpecial xlPasteAllMergingConditionalFormats