VBAで別シートへ値のみコピーしたいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで範囲を選択した上、別シートへ値のみコピーしたいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAで別シートへ値のみコピーして貼り付ける際に範囲を指定する方法
についてまとめます!
もくじ
VBAで別シートへ値のみコピーして貼り付けるイメージ
VBAで別シートへ値のみコピーして貼り付けるイメージについて説明をします。
以下のように値のみコピー元となるひな形シートとコピー先のシートを用意します。
通常Copyメソッドは書式は数式が入る形でコピーされますが、今回は値のみにした上でコピーするようにします。
それでは早速試してみましょう。
VBAで別シートへ値のみコピーして貼り付ける方法
VBAで別シートへ値のみコピーして貼り付ける方法について説明をします。
サンプルデータを準備する
サンプルデータを元シートとなるひな形シートへ入力しましょう。
コピー先の空シートを新規作成します。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 別シートへ値のみコピーする()
'元シートのセル範囲をコピーします。
Sheets("ひな形").Range("A1:H9").Copy
'別シートへ値のみ貼り付けします。
Sheets("Sheet1").Range("A1:H9").PasteSpecial Paste:=xlPasteValues
'範囲選択を解除します。
Application.CutCopyMode = False
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを設定する
VBAを設定していきましょう。
元シートのセル範囲を指定します。
シートは”ひな形”シート、セル範囲は”A1:H9″とします。
Sheets("ひな形").Range("A1:H9").Copy
別シートを指定しします。
シートは”Sheet1″シート、セル範囲は”A1:H9″とします。
Sheets("Sheet1").Range("A1:H9").PasteSpecial Paste:=xlPasteValues
VBAを実行する
VBAを実行してみましょう。
別シートに値のみコピーされましたね!数式も値に変換されています!
VBAの説明
VBAについて説明をします。
元シートのセル範囲をCopyメソッドでコピーします。
Sheets("ひな形").Range("A1:H9").Copy
別シートへ値のみ貼り付けをします。
値のみ貼り付けの場合は、PasteSpecialメソッドのPasetプロパティにxlPasteValuesを指定します。
Sheets("Sheet1").Range("A1:H9").PasteSpecial Paste:=xlPasteValues
PasteSpecialメソッド
PasteSpecialメソッドの構文は以下の通りです。
構文 | Rangeオブジェクト.PasteSpecial(Format, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, NoHTMLFormatting) |
---|---|
説明 | 指定された形式で、クリップボードの内容をシートに貼り付けます。 パラメータ「Format」によりデータを貼り付ける形式を指定できます。 Format:クリップボードのデータの形式を文字列で指定します。 Link(省略可能):リンクを設定するには Trueを指定します。既定値は False です。 DisplayAsIcon(省略可能):True を指定すると、貼り付けデータがアイコンとして表示されます。 既定値は False です。 IconFileName(省略可能):DisplayAsIcon が True の場合に使用するアイコンを含 むファイルの名前 を指定します。 IconIndex(省略可能):アイコン ファイルのどのアイコンを使うかを示すインデックス番号を指定します。 IconLabel(省略可能):アイコンのラベルを文字列で指定します。NoHTMLFormatting(省略可能):True を設定すると、HTML から書式設定、ハイパーリンク、およびイメージを削除します。 False を設定すると、HTML をそのまま貼り付けます。 既定値は False です。 |
コピーした場合、範囲選択の破線が点滅するコピーモードの状態になりますが、その範囲選択を解除します。
Application.CutCopyMode = False
VBAで別シートへ値のみコピーして貼り付ける方法 (列指定版)
これまでセル範囲を指定していましたが、列指定でVBAで別シートへ値のみコピーして貼り付ける方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 別シートへ値のみコピーする_列指定()
'元シートの指定列をコピーします。
Sheets("ひな形").Columns("A:H").Copy
'別シートへ値のみ貼り付けします。
Sheets("Sheet1").Columns("A:H").PasteSpecial Paste:=xlPasteValues
'範囲選択を解除します。
Application.CutCopyMode = False
End Sub
VBAを設定する
VBAを設定していきましょう。
元シートのセル範囲を指定します。
シートは”ひな形”シート、範囲となる列は”A:H”とします。
Sheets("ひな形").Columns("A:H").Copy
別シートを指定しします。
シートは”Sheet1″シート、範囲となる列は”A:H”とします。
Sheets("Sheet1").Columns("A:H").PasteSpecial Paste:=xlPasteValues
VBAを実行する
VBAを実行してみましょう。
指定列の範囲が値のみコピーされましたね!
VBAの説明
VBAについて説明をします。
これまでRangeプロパティでセル範囲を指定していましたが、今回は Worksheet オブジェクトのColumns プロパティを使い列指定をし、その範囲をCopyメソッドでコピーします。
Sheets("ひな形").Columns("A:H").Copy
VBAで別シートへ値のみコピーして貼り付ける方法 (行指定版)
次に、行指定でVBAで別シートへ値のみコピーして貼り付ける方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 別シートへ値のみコピーする_行指定()
'元シートの指定行数分コピーします。
Sheets("ひな形").Rows("1:9").Copy
'別シートへ値のみ貼り付けします。
Sheets("Sheet1").Rows("1:9").PasteSpecial Paste:=xlPasteValues
'範囲選択を解除します。
Application.CutCopyMode = False
End Sub
VBAを設定する
VBAを設定していきましょう。
元シートのセル範囲を指定します。
シートは”ひな形”シート、範囲となる行は”1:9″とします。
Sheets("ひな形").Rows("1:9").Copy
別シートを指定しします。
シートは”Sheet1″シート、範囲となる行は”1:9″とします。
Sheets("Sheet1").Rows("1:9").PasteSpecial Paste:=xlPasteValues
VBAを実行する
VBAを実行してみましょう。
指定行の範囲が値のみコピーされましたね!
VBAの説明
VBAについて説明をします。
Worksheet オブジェクトのRowsプロパティを使い行を指定をし、その範囲をCopyメソッドでコピーします。
Sheets("ひな形").Rows("1:9").Copy
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで別シートへ値のみコピーして貼り付ける際に範囲を指定する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す