教科書ではセルの選択が出ているが、シートの選択にも使うことができる。単体のシートを選択するときには、Selectメソッド、Activateメソッドのどちらを使っても同じ結果になる。
セルの「数式と値」をクリアする。表示形式や背景色、文字色、罫線などの書式が設定されていた場合、それらの書式はクリアされず保持される。
Sub CopyData()
Range("A1:D5").Select
selection.ClearContents
End Sub
なお、セルに入力されている値や数式をクリアする方法は、ClearContentsメソッドを使う以外に、Valueプロパティに空の文字列("") を入れる方法がある(ActiveCell参照)。
(例)ワークシートを削除する
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ステートメントは各自確認して下さい。
Copyメソッドは、指定したセルを別のセルにコピーする。Copyメソッドは、引数「Destination」にコピー先セルを指定できる。 Copyメソッドの引数に転送先を指定すれば、クリップボードを経由せずにデータをコピーすることができる。
Sub CopyData()
Range("B2").Copy Destination:=range("C4")
End Sub
OffsetプロパティとResizeプロパティについて。両方ともセル範囲を返すプロパティ。
基準となるセルから見て、相対的に移動したセルを表す。
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
と書いても構わない。
セル範囲の大きさを変更したセル範囲を表す。
(例)以下のようなシートの状態でセル範囲【B3】:【D6】のデータをクリアする。
Sub ResizeRange()
Range("B3").Resize(4, 3).ClearContents
End Sub
Resizeプロパティの引数は教科書の例のようにResize(4, 3)のように直接数値を指定することもできるが、一般的には、選択されているセル範囲の行数や列数を求めてから、変更量を加算か減算で指定してセル範囲の サイズを変更する。
1つのステートメントの中で、OffsetプロパティとResizeプロパティを連続して使うことができる。
Sub ResizeRange()
Range("B2:C4").Select
MsgBox "選択セル範囲のサイズを変更します"
Selection.Offset(2).Resize(, Selection.Columns.Count + 2).Select
End Sub
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(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
リンクはご自由にどうぞ。