石田修二研究室 > VBA >

セルの操作(2)

6.3. 覚えておきたいメソッド

6.3.1. Selectメソッド、Activateメソッド

教科書ではセルの選択が出ているが、シートの選択にも使うことができる。単体のシートを選択するときには、Selectメソッド、Activateメソッドのどちらを使っても同じ結果になる。

3.2. ClearContentsメソッド

セルの「数式と値」をクリアする。表示形式や背景色、文字色、罫線などの書式が設定されていた場合、それらの書式はクリアされず保持される。

Sub CopyData()
    Range("A1:D5").Select
    selection.ClearContents
End Sub

なお、セルに入力されている値や数式をクリアする方法は、ClearContentsメソッドを使う以外に、Valueプロパティに空の文字列("") を入れる方法がある(ActiveCell参照)。

3.3. Deleteメソッド

(例)ワークシートを削除する

Sub SheetDelete()
    Application.DisplayAlerts = False
    Worksheets("Sheet2").Delete
    Application.DisplayAlerts = True
End Sub

(例)すべてのグラフシートを削除する

Sub ChartDelete()
    Dim myChart As Chart
    For Each myChart In Charts
        myChart.Delete
    Next
End Sub

(注)For Each…Nextステートメントは各自確認して下さい。

3.4. Copyメソッド

Copyメソッドは、指定したセルを別のセルにコピーする。Copyメソッドは、引数「Destination」にコピー先セルを指定できる。 Copyメソッドの引数に転送先を指定すれば、クリップボードを経由せずにデータをコピーすることができる。

Sub CopyData()
    Range("B2").Copy Destination:=range("C4")
End Sub

6-4 覚えておきたいプロパティ2

OffsetプロパティとResizeプロパティについて。両方ともセル範囲を返すプロパティ。

Offsetプロパティ

基準となるセルから見て、相対的に移動したセルを表す。

Offsetプロパティの書式
Offset(行, 列)

Range("B3").Offset(1, 0) は Range("B4") を表す。

Range("B3").Offset(0, 1) は Range("C3") を表す。

(例)選択セル範囲の位置を行列とともに変更する

Sub OffRange1()
    Selection.Offset(-1, 2).Select
End Sub

(例)選択セル範囲の行位置を変更する

Sub OffRange2()
    Selection.Offset(2).Select
End Sub

2行目は Selection.Offset(2, 0).Select と書いても構わない。

(例)選択セルの列位置を変更する

Sub OffRange3()
    Selection.Offset(0, -1).Select
End Sub

2行目は Selection.Offset(, -1).Select と書いても構わない。

Resizeプロパティ

セル範囲の大きさを変更したセル範囲を表す。

Resizeプロパティの書式
Resize(行, 列)

(例)以下のようなシートの状態でセル範囲【B3】:【D6】のデータをクリアする。

Sub ResizeRange()
    Range("B3").Resize(4, 3).ClearContents
End Sub

Resizeプロパティの引数は教科書の例のようにResize(4, 3)のように直接数値を指定することもできるが、一般的には、選択されているセル範囲の行数や列数を求めてから、変更量を加算か減算で指定してセル範囲の サイズを変更する。

OffsetプロパティとResizeプロパティを併用する

1つのステートメントの中で、OffsetプロパティとResizeプロパティを連続して使うことができる。

Sub ResizeRange()
    Range("B2:C4").Select
    MsgBox "選択セル範囲のサイズを変更します"
    Selection.Offset(2).Resize(, Selection.Columns.Count + 2).Select
End Sub

6-5 複数セルの指定方法

Rangeを使ったやり方

Sub sample15()
    ActiveCell.Value = 100
    Range("B3").Value = "VBA"
End Sub

For ... Nextステートメントについては、別のページで説明する。

Sub sample17()
    Dim i As Long
    For i = 1 To 20 Step 2
        Range(Cells(i, 1), Cells(i, 4)).Interior.ColorIndex = 15
    Next i
End Sub

Rangeプロパティの引数にCellsプロパティを指定する際の注意点

別シートのセルが対象のときは、次のようにシート名まで含めなければならない。

Range(Worksheets("Sheet2").Cells(1, 1), Worksheets("Sheet2").Cells(5, 5)) = "VBA"

しかし、このステートメントでは冗長なので、通常は次のようにWithステートメントを使って記述を簡略化する。

With Worksheets("Sheet2")
    .Range(.Cells(1, 1), .Cells(5, 5)).Value = "VBA"
End With

リンクはご自由にどうぞ。

【石田修二研究室】 【VBAトップページ】