CellsメソッドとRangeメソッドは、Excelシート上のセルを操作するための方法です。これらのメソッドを使うことで、Excelシート上の任意のセルを指定し、そのセルに対してさまざまな操作を行うことができます。
構文
Cells
CellsはExcel VBAにおいて、シートの中のセルにアクセスするために使用されるメソッドです。Cellsメソッドを使用することで、指定したセルの値を読み取ったり、更新したりすることができます。
例
Cells(1,1).Value = 10
また、Cellsメソッドには、列番号や行番号を指定する際に文字列を使用することもできます。例えば、列番号に"A"を指定することで、列"A"にアクセスすることができます。
Cells(1,"A").Value = 10
Range
RangeはExcel VBAにおいて、セル範囲を操作するために使用されるメソッドです。Rangeメソッドを使用することで、指定した範囲の値を読み取ったり、更新したりすることができます。
例
Range("A1:B2").Value = 10
また、Rangeメソッドには、セル範囲を文字列で指定する他に、オブジェクトで範囲を指定することもできます。
Set rng = Range(Cells(1,1), Cells(2,2))
rng.Value = 10
CellsとRangeの使い分け方
CellsメソッドとRangeメソッドは、どちらもExcelシート上のセルを操作するための方法ですが、それぞれに違いがあります。
まず、Cellsメソッドは、行番号と列番号を指定することで、セルを指定します。たとえば、Cells(1,1)は、シート上のA1セルを指します。Cellsメソッドは、単一のセルを指定する場合に使用されます。一方、Rangeメソッドは、範囲を指定することができます。たとえば、Range("A1:B2")は、シート上のA1セルからB2セルまでの範囲を指します。
また、Cellsメソッドは、数値を使ってセルを指定するため、行と列の数値が逆になっていると、間違ったセルを指定することがあります。一方、Rangeメソッドでは、文字列を使ってセルを指定するため、行と列の順序が問題になりません。
さらに、Cellsメソッドは、シートのアクティブなセルを基準にして、相対的なセルを指定することができます。たとえば、Cells(1,1).Offset(1,1)は、アクティブなセルの右下のセルを指します。一方、Rangeメソッドは、指定された範囲を基準にして、相対的なセルを指定することができます。
したがって、Cellsメソッドは単一のセルを指定する場合に便利で、Rangeメソッドは範囲を指定する場合に便利です。使用する場合には目的に合わせて選択することが重要です。
使用例
セル範囲の指定方法
Excel VBAにおいて、セル範囲を指定する方法には、文字列で範囲を指定する方法と、オブジェクトで範囲を指定する方法があります。
文字列で範囲を指定する方法は、Rangeメソッドで指定する方法として前述しました。セル範囲を指定する際は、"セル範囲"という文字列で指定します。例えば、"A1:B2"という文字列で、A1からB2の範囲を指定することができます。
オブジェクトで範囲を指定する方法は、CellsメソッドとRangeメソッドを併用することで指定することができます。例えば、以下のようにCellsメソッドで始点と終点を指定し、Rangeメソッドで範囲を指定することができます。
Set rng = Range(Cells(1,1), Cells(2,2))
セルの値の読み込み
Excel VBAにおいて、セルの値を読み込むには、CellsメソッドまたはRangeメソッドのValueプロパティを使用します。
val = Cells(1,1).Value
'セルA1からB2の範囲の値を読み込む
Set rng = Range("A1:B2")
val = rng.Value
セルの値の書き込み
Excel VBAにおいて、セルの値を書き込むには、CellsメソッドまたはRangeメソッドのValueプロパティに書き込む値を指定します。
Cells(1,1).Value = 10
'セルA1からB2の範囲に10を設定する
Set rng = Range("A1:B2")
rng.Value = 10
セルの書式設定
Excel VBAにおいて、セルの書式を設定するには、CellsメソッドまたはRangeメソッドのNumberFormatプロパティを使用します。NumberFormatプロパティには、Excelの書式コードを指定することができます。
Cells(1,1).NumberFormat = "0.00"
'セルA1からB2の範囲の書式を設定する
Set rng = Range("A1:B2")
rng.NumberFormat = "0.00"
セルの色の設定
Excel VBAにおいて、セルの色を設定するには、CellsメソッドまたはRangeメソッドのInteriorプロパティを使用します。Interiorプロパティには、色を表す値を指定することができます。
Cells(1,1).Interior.Color = RGB(255, 0, 0)
'セルA1からB2の範囲の背景色を設定する
Set rng = Range("A1:B2")
rng.Interior.Color = RGB(255, 0, 0)
セルのフォントの設定
Excel VBAにおいて、セルのフォントを設定するには、CellsメソッドまたはRangeメソッドのFontプロパティを使用します。Fontプロパティには、フォント名やサイズ、スタイルなどを指定することができます。
Cells(1,1).Font.Name = "MS UI Gothic"
Cells(1,1).Font.Size = 14
Cells(1,1).Font.Bold = True
'セルA1からB2の範囲のフォントを設定する
Set rng = Range("A1:B2")
rng.Font.Name = "MS UI Gothic"
rng.Font.Size = 14
rng.Font.Bold = True
セルに数式を設定する
Excel VBAにおいて、セルに数式を設定するには、CellsメソッドまたはRangeメソッドのFormulaプロパティを使用します。Formulaプロパティには、セルに設定する数式を指定することができます。
Cells(1,1).Formula = "=SUM(B1:B2)"
'セルA1からB2の範囲に数式を設定する
Set rng = Range("A1:B2")
rng.Formula = "=SUM(B1:B2)"
セルの結合
Excel VBAにおいて、セルを結合するには、RangeメソッドのMergeメソッドを使用します。結合するセルは、Rangeメソッドで範囲を指定します。
Set rng = Range("A1:B2")
rng.Merge
まとめ
以上が、Excel VBAにおけるCellsメソッドとRangeメソッドの基本的な使い方です。これらのメソッドを組み合わせることで、セルの値の読み込みや書き込み、書式設定や色の設定、フォントの設定や数式の設定、セルの結合など、多彩な操作を行うことができます。