HOME > VBA広場 > Excel VBA ビギナーズ > 第14回 目的の位置にセルをコピーしてみよう 2/4

第14回 目的の位置にセルをコピーしてみよう 2/4

第14回 目的の位置にセルをコピーしてみよう| 1/4  2/4  3/4  4/4 

VBエディタでマクロ作成

それでは、VBエディタを起動し、標準モジュール・プロシージャを挿入しましょう。
(Excel2003以前のバージョンを使用している方は“イベント一覧.xls”、Excel2007を使用している方は“イベント一覧2007.xlsx”を使用しましょう)

  1. [ツール]メニューの[マクロ]から[Visual Basic Editor]を選択する。
    ▼ 図02-01 VBエディタを起動
    図02-01 VBエディタを起動

    【Excel2007の場合】

    Excel2007ではメニューバーでなく、リボンを使用します。[マクロの記録]ボタンは[開発]タブ内に用意されています。
    ※ [開発]タブは既定では表示されていません。[開発]タブの表示方法はこちら

    ▼ 図02-02 Excel2007でのVBエディタの起動
    図02-02 Excel2007でのVBエディタの起動
  2. [挿入]メニューから[標準モジュール]を選択する。
    ▼ 図02-03 標準モジュールの追加
    図02-02 Excel2007でのVBエディタの起動
  3. [挿入]メニューから[プロシージャ]を選択し、[プロシージャの追加]ダイアログボックスを表示する。
    ▼ 図02-04 プロシージャの追加
    図02-04 プロシージャの追加
  4. [名前]ボックスに「AddNewData」と入力する。
  5. [種類]から[Subプロシージャ]を選択する。
  6. [適用範囲]から[Publicプロシージャ]を選択する。
  7. [OK]ボタンをクリックする
    ▼ 図02-05 [プロシージャの追加]ダイアログボックス
    図02-05 [プロシージャの追加]ダイアログボックス

画面に「Public Sub AddNewData()」と「End Sub」が表示されます。この間にVBAコードを記述し、マクロを作成していきましょう。

マクロの中身を作成する

「Public Sub AddNewData」以降にプログラムを記述し、マクロを完成させていきましょう。

  1. 「Range("J3:P3").Select」と入力する。
    ※セルJ3からP3を選択するコードです。(セルJ3からP3には空白行のフォーマットが用意されています。)
  2. 「Selection.Copy Cells(ActiveSheet.Rows.Count,2).End(xlUp).Offset(1)」と入力する。
    ※選択していた範囲をコピーし、データ最終行の下に貼り付けます。
  3. 「Cells(ActiveSheet.Rows.Count,2).End(xlUp).Select」と入力する。
    ※データ最終行にアクティブセルを移動します。
    ▼ 図02-06 コードの入力
    図02-06 コードの入力

以上でコードの入力は完了です。

Hの「Selection.Copy…」の「Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Offset(1)」部分は、Excel2003以前のバージョンならば「Range("B65536").End(xlUp).Offset (1)」、Excel2007ならば「Range("B1048576").End(xlUp).Offset (1)」と指定すると、同様にデータ最終行の下に貼り付けできます。

使用するExcelのバージョンが限定されている場合には、「Rangeプロパティ」を使用して起点となるセルを指定できます。ただし、Excel2007よりワークシート内の行数・列数が変更されたため、Rangeプロパティを使用してワークシートの最終行を指定する場合は注意しましょう。

また、Endは領域内の終端セルへ移動するプロパティです。Endに続けて指定した方向の終端セルへ移動します。今回のようにワークシートの最終行から「End(xlUp)」と指定すると、上方向の終端セルへ移動します。その後、Offsetプロパティを使用して1行下のセルへ移動すると、データ最終行の次行へ移動できます。

▼ 図02-07 Excel2003以前のバージョンでのみ使用する場合
▼ 図02-08 Excel2007でのみ使用する場合

Excel画面に戻り、マクロを実行するボタンを作成しましょう。

第14回 目的の位置にセルをコピーしてみよう| 1/4  2/4  3/4  4/4