5.1 セルや行列を扱うための基本
値を入れたり罫線を引いたり背景色を変えたりコピーしたり貼付けたりなど、セルや行列を扱うときの基本です。

セルを扱う場合はRange.???またはCells.???を使い、列を扱う場合はRange.???またはColumns.???、行を扱う場合はRange.???またはRows.???を使います。

???の部分はプロパティやメソッドで、プロパティには罫線や背景色や他いろいろ、メソッドにはコピーや貼り付けや他いろいろです。
1つのセルを指定する場合
1つのセルを指定する場合です。Rangeを使う場合とCellsを使う場合の2種類あります。

まずは、Cellsで指定する場合です。Cellsで指定する場合は、行番号列番号を数値で指定します。

Cells(行番号,列番号).???

次にRangeで指定する場合その1です。"セル名"には、A1C5などのセル名を指定します。

Range("セル名").???
セルの範囲を指定する場合
次に、範囲を指定する場合です。範囲を指定する場合、基本的にはRangeを使います。

まずは、セル名で範囲を指定する場合です。セル名で範囲を指定する場合は A1:C5B2:J6 のように、選択範囲の開始セル名終了セル名: で区切って指定します。例えば、B5〜J10の範囲を使いたいときはRange("B5:J10").???です。

Range(セル名による範囲).???

もう一つ方法があります。セルの範囲にCellsを使う方法です。Cellsを2つ指定していますが、左(Cells(行番号1, 列番号1))が選択開始位置、右(Cells(行番号2, 列番号2))が選択終了位置です。

この方法で指定する場合はR1C1参照形式でセルの位置を考えるのがコツ。例えば、B5〜J10をR1C1参照形式で表すとR5C2〜R10C10です。そして、この範囲を指定する場合はRange(Cells(5, 2), Cells(10, 10)).???です。

ちなみに、開始・終了のセルを同じセル(Range(Cells(10, 10), Cells(10, 10)).???)にすると、1つのセルを指定したことになります。

Range(Cells(行番号1, 列番号1), Cells(行番号2, 列番号2)).???

行を指定する場合
今度は、行を指定する場合です。RangeまたはRowsを使います。

まずは、Rangeを使う場合です。開始行番号終了行番号:で区切って指定します。1行を選択するときは開始・終了ともに同じ番号を指定します。

Range("開始行番号:終了行番号").???

次に、Rowsで指定する場合です。1行を指定する方法と、複数行を指定する方法の2種類あります。まずは1行を指定する方法ですが、Rows(行番号)のように行番号を数値で指定します。

Rows(行番号).???

Rowsのその2、複数行を指定する場合です。複数行を指定する場合はRows("開始行番号:終了行番号")のように開始と終了の行番号を:で区切り数値で指定します。ちなみに、全体を”で囲みます。開始と終了を同じ番号にすると1行を指定するようになるのは言うまでもありません(笑)。

Rows("開始行番号:終了行番号").???
列を指定する場合
今度は、列を指定する場合です。RangeまたはColumnsを使って行います。

まずは、Rangeを使う場合です。開始列名終了列名:で区切って。1列の場合は開始・終了ともに列名を指定します。

Range("開始列名:終了列名").???

次に、Columnsで指定する場合です。1列を指定する方法と、複数行を指定する方法の2種類ありますが、とりあえず1列を指定する方法を説明します。1列を指定する場合は、Columns(列番号)のように列番号を数値で指定します。

Columns(列番号).???

列を複数指定したいときもありませんか?しかも、列名じゃなく列番号で…。もちろん可能です。列番号で複数の列を指定したいときは、RangeColumnsを組み合わせて使います。

複数の列を列番号で指定する場合は、Range(Columns(開始列番号),Columns(終了列番号)).???のように、Rangeの中にColumns開始列番号終了列番号を、カンマで区切って指定します。開始と終了を同じ番号にすると1列を指定するようになるのは言うまでもありません。

Range(Columns(開始列番号),Columns(終了列番号)).???
ワークブックやワークシートを指定してセルを…
RangeCellsRowsColumnsには、ワークシートやワークブックを指定することもできます。

まずは、ワークシートを指定する場合です。ワークシートの部分にワークシートを表すオブジェクト(WorkSheets(???)ActiveSheet)を指定します。

ワークシート.Range(セルや範囲の指定).???

さらに、ワークブックも指定できます。ワークブックの部分にワークブックを表すオブジェクト(WorkBooks(???)ActiveWorkbook)を指定します。ワークシートの部分は、上と同じです。

ワークブック.ワークシート.Range(セルや範囲の指定).???

なお、ワークシートやワークブックの指定については、「2.ワークブック、ワークシートの指定」の2.1 直接指定する方法または2.2 間接的に指定する方法をどうぞ。
ワークブックやワークシートを指定する場合と指定しない場合の違い
ワークブックやワークシートを指定する場合と指定しない場合の2つの例を挙げましたが、これらはマクロを書いた場所によって少々動きが違います。特に、指定しない場合はマクロを書いた場所によって全く異なりますので注意してください。

なお、マクロを書く場所についてはエクセルスマイル!4.マクロを書く場所をどうぞ。


ワークシートやワークブックを指定しない場合

ワークシートへ書いたマクロの場合は、書いたシートのセルが対象です。

標準モジュールやワークブックへ書いたマクロの場合は、現在選択されているシートが対象です。


ワークシートやワークブックを指定した場合

指定したワークシートやワークブック内のセルが対象です。
Copyright(C) 1999-2006 結城圭介。 All rights reserved