前回までの説明で、VBAでマクロを作成し、実行することができるようになりました。今回からは、VBAのプログラムの書き方を勉強して行きたいと思います。前回の例題に出てきたものに、Cellsプロパティがありました。Excelのセルの内容を読み込んだり、セルにデータを設定したりできるものです。表を操作していろいろな作業をするのは、Excel(表計算プログラム)の得意とするところです。今回はExcel表におけるデータの操作に焦点を当てていきたいと思います。

ゼロからはじめるVBA - 基本編
ゼロからはじめるVBA - VBA事始め編

特定のセル範囲を指定する

前回、セルを指定するための命令として、Cellsプロパティを紹介しました。セルを操作するために、まずは操作対象のセルを選択しておく必要があります。他に特定の範囲を指定するためのプロパティとしては、Rangeプロパティ、Rowsプロパティ、Columnsプロパティがあります。

また、セルの指定は現在アクティブになっているシートに対して行われます。他のシートのセルを扱うときは、Worksheets、Sheetsプロパティで扱いたいシートをアクティブにしてからセルを指定する必要があります。

以下では、これらのプロパティについて説明していきます。

シートを選択する方法

シートを設定する方法を説明します

[リスト1]シートの設定方法

Sheets("Sheet1").Select    '(1)
Worksheets("Sheet1").Activate   '(2)

(1)(2)どちらもSheet1をアクティブにする指定です。どちらを使用してもかまいません。具体的にセルを指定する前に書きます。次に、セルの指定を説明します。

以下説明するリストはsample.lzhの中に「セル操作編例題.xlsm」「素材別カロリー表.xlsm」「他のBook.xlsx」として収録しています。サンプルとしてご活用ください。

Rangeプロパティ

セルを指定するプロパティです。

(1)1つのセルを指定

以下は、2行C列を指定します。

[リスト2]range_01サブルーチン(セル操作編例題.xlsm)

Sub range_01()
    Sheets("Sheet1").Select
    Range("C2").Select
End Sub

図1:一つのセルを指定

(2)複数のセルを指定

以下は、1行A列と3行C列を指定します。

[リスト3]range_02サブルーチン(セル操作編例題.xlsm)

Sub range_02()
    Sheets("Sheet1").Select
    Range("A1,C3").Select
End Sub

図2:複数のセルを指定

(3)ある範囲を指定

以下は、1行A列から3行C列を範囲指定します。

[リスト4]range_03サブルーチン(セル操作編例題.xlsm)

Sub range_03()
    Sheets("Sheet1").Select
    Range("A1:C3").Select
End Sub

図3:セルの範囲を指定

Cellsプロパティ

セルを指定するプロパティです。

(1)一つのセルを指定

以下は2行C列を指定します。結果は、図1と同じです

[リスト5]Cells_01サブルーチン(セル操作編例題.xlsm)

Sub cells_01()
    Sheets("Sheet1").Select
    Cells(2, 3).Select
End Sub

(2)ある範囲を指定

以下は1行A列から3行C列を範囲指定します。Cellsプロパティはあくまでひとつのセルの指定するものですので、範囲指定したい場合はRangeプロパティと併用します。結果は、図3と同じです。

[リスト6]Cells_02サブルーチン(セル操作編例題.xlsm)

Sub cells_02()
    Sheets("Sheet1").Select
    Range(Cells(1, 1), Cells(3, 3)).Select
End Sub