今回の記事では、セルの値をコピー&ペーストする方法について詳しく解説します。
動画でも解説していますので、動画の方がわかりやすいという方は、目次から動画の箇所に移動してください。
はじめに
前回はマクロの記録という機能を使って、セルA1の値をセルB1にコピーする手順を学びましたが、マクロの記録は手動で行った操作をすべてコードに変換してしまうため、余分な動作が含まれてしまうことがあります。
そこで今回は、本当に必要な動作だけを実行するように、自分の手でコードを書いてみます。
まず、コピーするセルを指定する方法について学び、その後にコピー&ペーストの基本的なやり方、さらに別のブックからデータをコピーしてくる方法まで順を追って説明していきます。
セルの指定方法
最初にセルの指定方法について解説します。
セルをコピーする際には、どのセルを対象にするかを指定する必要があります。この指定方法には、RangeとCellsという2つの方法があります。
書き方としてはこのような感じになります。
- Range(”A3”)
- Cells(3, 1)
Rangeを使うと「A3」のようにイメージしやすい書き方で指定できる一方で、Cellsでは数値で指定するため、少し慣れが必要です。ただし、Cellsは行番号と列番号をどちらも数字で表示するため、メリットがあります。こちらについては「変数」というものを説明するときに解説します。
また、RangeはA(行のアルファベット)、3(行番号)と行、列の順に書くのですが、Cellsは3(行番号)、3(列番号)の順番になるので注意が必要です。
コピー&ペーストする方法
セルの値をコピー&ペーストするには、このような書き方になります。
Range(“A1”).Copy Range(“B1”)
これはセルA1をコピーして、貼り付け先はセルB2、という意味になります。
コピー元のセル.Copy コピー先のセル
という書き方です。
コピー元のセルの「Range(“A1”)」と「Copy」の間に「 . (ドット)」が入っているのに注意です。ドットは「てにをは」みたいなものだと思っておいてください。今回はの場合は「Range(“A1”)」を「コピーする」の「を」にあたります。このようにセルの指定と何かをつなげるときにドットが使われます。
別シートのセルからコピーする方法
先ほどはセルしか指定しなかったのですが、その場合は今アクティブになっているシートのセルを指定したことになります。
例えば、「Sheet1」「Sheet2」の2つのシートがあって、今アクティブになっている(=画面上に表示されている)シートが「Sheet1」だった場合、Range(“A1”)と書くと「Sheet1のセルA1」という意味になります。
別のシートのセルを指定したい場合はセルの前にシート名を追加してあげます。
Worksheets(“Sheet1”).Range(“A1”)
ここでもドットを使ってシート名とセルA1をつなげています。このドットは「Sheet1」の「セルA1」の「の」にあたります。
Sheet2をアクティブにした状態で
Worksheets(“Sheet1”).Range(“A1”).Copy Range(“B1”)
を実行すると、Sheet1のセルA1をコピーしてSheet2のセルB1に貼り付けをするという意味になります。(「Sheet2」という指定は、アクティブなシートの名前なので省略されています)
別のエクセルのセルからコピーする方法
最後に別のエクセルからコピーする方法です。
先ほどのシートと同様に、エクセルもアクティブなエクセルであれば省略できます。
例えば、今アクティブなエクセルの名前がtest.xlsmだった場合、エクセルの名前を省略すると「test.xlsxという名前のエクセルの、セルA1」という意味になるわけです。
エクセルの指定はシート名の前にエクセルのファイル名(拡張子も含め)を追加してあげます。
Workbooks(“test.xlsx”).Worksheets(“Sheet1”).Range(“A1”).Copy Range(“B1”)
という書き方になります。
1点注意があって、これを実行する際にはtest.xlsxというエクセルファイルを開いた状態にしておく必要があります。なので、コピーをする前にファイルを開くという手順が必要になります。これについては今後やり方を解説します。
課題
今日の内容をふまえて、別のエクセルからセルの値をコピー&ペーストするコードを書いてみましょう。
準備
・新しいエクセルを開いて、「コピー先.xlsx」という名前で保存する
・VBAを書いているエクセルのアクティブなシートのセルB2に何か数字を入力する
課題内容
VBAを書いているエクセルのアクティブなシートのセルB2に書かれている数字をコピーして、「コピー先.xlsx」というエクセルの「Sheet1」のセルB2に貼り付けてください。
(下の「回答」の左にある▲を押すと回答のコードが見れます)
回答
Sub kadai1()
Range("B2").Copy Workbooks("コピー先.xlsx").Worksheets("Sheet1").Range("B2")
End Sub
動画での解説
動画でも解説をしていますので、動画の方がわかりやすいという方はこちらからどうぞ!
コピー&ペーストができるようになったので、次回は繰り返し同じ作業をする方法を勉強していきます。
最後まで読んでいただき、ありがとうございました。
少しでも役に立つ情報が提供できれば嬉しいです。
コメント