「VBA入門!」マクロで業務効率を上げる その2

VBA
スポンサーリンク

この記事で分かることは

  • セルを指定する「Range」と「Cells」の使い方
  • コピー & ペースト

本記事は、業務効率を改善するためにエクセルでの作業を自動化したいけど、何からしていいかわからないという方に向けの記事となります。

セルを指定してコピーし、他のセルに張り付ける(ペースト)はエクセルの作業を自動化する上で、頻繁に使うことになると思いますので、この記事でできるようになりましょう!

前回の記事に開発環境の設定を記載していますので、まだご覧になっていない方は、以下のリンクをご覧ください。

さっそく、Visual Basicのコード画面を開いて(「Alt」+「F11」で開けます。)コードを書いていきましょう。

1.セルを指定する「Range」の使い方

まずは、以下のコードを書いて、動作を確認してみましょう。

Sub test()

Range("A2").Select

End Sub

動作させてみると、

セル「A2」にカーソルが移動しました。コードの「A2」と記載されている部分を「A5」や「B1」等に書き換えて実行してみると、感覚がつかめるかもしれませんね。

もうご理解いただけているかもしてませんが、「Range(“A2”).Select」の解説をします。

Range(“A2”)はセルの座標を指定しています。そのままですが、Range(“A2”)は「セルA2」をRange(“B1”)は「セルB1」を指定する意味となります。

.Selectは指定したセルにカーソルを移動させるコードになります。なので、Range(“A2”).Selectと記載したら、「セルA2」に「カーソルを移動する」という動きをします。

2.セルを指定する「Cells」の使い方

やることは、「Range」とほとんど同じですが、まずは以下のコードを書いてみましょう。

Sub test()

Cells(2, 1).Select

End Sub

動作させてみると、

「Range(“A2”)」の時と同様に「セルA2」に異動しました。「Cells(2, 1).Select」の「2」と「1」の部分を他の数値に書き換えて実行すると感覚がつかめるかもしれませんね。

コードの解説をします。

つまり、「Cells(2, 1)」は「セルA2」を指定したということです。なので、本記事で紹介したコードでは、「Range(“A2”)」と「Cells(2, 1).Select」に動作としての違いはない為、現時点ではお好みの方で使用してください。

「.Select」の部分は「1.セルを指定する「Range」の使い方」で説明した通りです。

3.セルの値をコピー&ペースト

いよいよ「コピー」&「ペースト」の解説です。

先に、セルのA1に「こんにちは!」と記載してから、以下のコードを書いて実行してみましょう。

Sub test()

    Range("A1").Select
    Selection.Copy
    
    Range("A3").Select
    Selection.PasteSpecial

End Sub

動作させてみると、

A1に記載した「こんにちは!」がA3にペーストされました。

コードの解説をします。

「Range(“A1”).Select」でセル「A1」を指定する(カーソルが移動する)。

「Selection.Copy」は現在指定されているセル(上記のコードでは「A1」)をコピーする。

「Range(“A3”).Select」でセル「A3」を指定する(カーソルが移動する)。

「Selection.PasteSpecial」は現在指定されているセル(上記のコードでは「A3」)にペーストする(張り付ける)

となります。

4.もっと短いコードでコピー&ペーストする

もっと短いコードでコピー&ペーストしたい方に2つ方法を紹介します。

Sub test()

    Range("A1").Copy
    
    Range("A3").PasteSpecial

End Sub

このコードは「セルA1」をコピーして「セルA3」にペーストするコードです。

「3.セルの値をコピー&ペースト」の内容を見ていただいた方には動作が理解できるかと思います。

続いてはさらに短いコードです。

Sub test()

    Range("A3").Value = Range("A1").Value

End Sub

このコードは、「セルA3」の値を「セルA1」にするというコードです。

「.Value」はセルの値を指定するコードになるので、本コードでは「セルA3」と「セルA1」の値を同じにします。

コメント

タイトルとURLをコピーしました