- 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
プログラミングや開発環境構築の解説サイトを運営しています。