- Home ›
- Excel VBA入門 ›
- セルの編集
形式を選択して貼り付け
セルを貼り付けるときに、書式だけをコピー元から貼りつけたい場合や値だけを貼りつけたい場合があります。このような場合には形式を指定して貼り付けを行います。ここでは Excel VBA を使って形式を選択して貼り付けを行う方法を解説します。
(Last modified: )
目次
形式を選択して貼り付け
Excel で形式を選択して貼り付けを行う場合は、次のようなダイアログから形式を選択します。
			 
			
Excelで貼り付けを行う場合にも「形式を選択して貼り付け」を行うと上記のようなウィンドウが表示されますが、これと同じことをVBA上で行うことが出来ます。
形式を選択して貼り付けを行う場合には、貼り付けたい場所にあるRangeオブジェクトに対して「PasteSpecial」メソッドを使います。(PasteメソッドはWorksheetオブジェクトに対してでしたが、PasteSpecialメソッドはRangeオブジェクトに対して行いますので注意して下さい)。
Range("A1").Copy
Range("B2").PasteSpecial Paste:=xlPasteAll, _
    Operation:=xlPasteSpecialOperationNone
まず「Paste」引数に何を貼り付けるかを指定します。設定可能な値は以下の通りです。
| 定数 | 貼り付ける内容 | 
|---|---|
| xlPasteAll | すべて | 
| xlPasteFormulas | 数式 | 
| xlPasteValues | 値 | 
| xlPasteFormats | 書式 | 
| xlPasteComments | コメント | 
| xlPasteValidation | 入力規則 | 
| xlPasteAllExceptBorders | 罫線を除くすべて | 
| xlPasteColumnWidths | 列幅 | 
| xlPasteFormulasAndNumberFormats | 数式と数値の書式 | 
| xlPasteValuesAndNumberFormats | 値と数値の書式 | 
省略した場合は「xlPasteAll」がデフォルトの値となります。
次に「Operation」引数に演算方法を指定します。設定可能な値は以下の通りです。
| 定数 | 貼り付ける内容 | 
|---|---|
| xlPasteSpecialOperationNone | 演算をしない | 
| xlPasteSpecialOperationAdd | 加算 | 
| xlPasteSpecialOperationSubtract | 減算 | 
| xlPasteSpecialOperationMultiply | 乗算 | 
| xlPasteSpecialOperationDivide | 除算 | 
省略した場合は「xlPasteSpecialOperationNone」がデフォルトの値となります。
また「SkipBlanks」引数に「True」を設定すると、空白セルを無視して貼り付けが行われます。省略可能でデフォルトは「False」です。「Transpose」引数に「True」を指定すると行と列を入れ替えて貼り付けが行われます。省略可能でデフォルトは「False」です。
このようにExcelで指定可能な値にそれぞれ対応しています。(リンク貼り付けについては『セルのリンク貼り付け』を参照して下さい)。
サンプルプログラム
では簡単なサンプルで試してみましょう。
下記のようなExcelファイルを用意します。
			 
			
表(セル範囲B2:C5)をまとめてコピーし、セルE2の位置へ書式だけを貼り付けます。
Sub テスト()
    Dim range1 As Range
        
    Set range1 = Range("B2:C5")
    range1.Copy
    
    Range("E2").PasteSpecial Paste:=xlPasteFormats
    
    Application.CutCopyMode = False
End Sub
上記マクロを実行すると次のようになります。
			 
			
※見やすいように、貼り付け後に他のセルをクリックして選択を解除しています。
-- --
Excel VBA を使って形式を選択して貼り付けを行う方法を解説しました。
( Written by Tatsuo Ikura )
 
				著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。
